Toutes mes réponses sur les forums
-
AuteurMessages
-
22 janvier 2019 à 13 h 42 min en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242962
Oui ca peut-être une solution intermédiaire, mais ça m’obligerait à mettre le switch à l’extérieur de ma fonction, soit dans le fichier ou se trouve ma fonction (en l’occurence functions.php), soit dans le single.php (là où la fonction est appelée). Je vais voir si je peux pas mettre un « include mypage.php » afin de ne déclarer ces variables que lorsque la fonction est appelée.
Merci, je vais tenter de me débrouiller avec ça. Je ne met pas le sujet en résolu de suite, je laisse le post ouvert au cas ou qqn aurait des solutions alternatives.
22 janvier 2019 à 13 h 01 min en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242940La fonction calcule plus que deux valeurs en l’état, il y en a 2 pour les taxo hiérarchiques et 3 pour les non hiérarchiques. Mais il y en aura bien plus à termes, vu que je compte travailler avec une bonne dizaine de custom post type et leurs taxonomies associées.
Tu me dis, je te cite : « plutôt que d’appeler la fonction comme cela je l’appellerais en passant le nom de la variable en string et ensuite en fonction de la string reçue j’afficherais le bon résultat. »
Ça donnerais quoi sur une fonction simplifié, genre ça :
function get_tax_terms_for_the_product() {
// Get post by post ID.
if ( ! $post = get_post() ) {
return '';
}
// Get post type by post.
$post_type = $post->post_type;
// Get the singular_name of the cpt
$post_type_obj = get_post_type_object( $post_type );
// Get post type taxonomies.
$taxonomies = get_object_taxonomies( $post_type, 'objects' );
foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){
// Get the terms related to post.
$terms = get_the_terms( $post->ID, $taxonomy_slug );
if ( ! empty( $terms ) ) {
// We switch the HTML output in order to give them custom CSS classes
switch ($taxonomy_slug) {
case "tax-plates-formes":
$info_plates_formes[] .= '<li class="info-plateformes">'.$term->name.'</li>';
break;
case "tax-categories":
$info_categories[] .= '<li class="info-categories">'.$term->name.'</li>';
break;
}
}
}
}La fonction a vraiment été simplifié, pour y voir plus plus clair. Je te demande encore ça, et en fonction de ta réponse je tenterais de me débrouiller avec. Merci en tous les cas.
- Cette réponse a été modifiée le il y a 5 années et 10 mois par Mooks.
22 janvier 2019 à 12 h 36 min en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242931Je complète un peu ma réponse sinon tu vas peut-être pas t’y retrouver. Cette fonction me permet :
- de créer un « taxonomies_object » avec tous les termes attribués à l’article
- de générer les codes HTML de sortie en fonction de la taxonomie, et qui sont en fait les variables que je souhaite passer en paramètres
J’ai des taxonomies hiérarchiques et non hiérarchiques, et c’est pour cela que j’utilise la condition « is_taxonomy_hierarchical », afin d’afficher les parents quand il n’y a que des parents… et afficher uniquement les enfants lorsque la taxonomie est hiérarchique.
Pour répondre finalement à ta question : « Donc tu veux définir une variable dans une fonction et la passer en paramètre de la même fonction ? « , c’est un grand OUI! 😉 Je dirais même passer DES variables en paramètres, pas seulement une.
22 janvier 2019 à 12 h 20 min en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242924Voici ma fonction actuelle (pas sûr de l’emplacement du return, mais c’est pas très important):
function get_tax_terms_for_the_product() {
// Get post by post ID.
if ( ! $post = get_post() ) {
return '';
}
// Get post type by post.
$post_type = $post->post_type;
// Get the singular_name of the cpt
$post_type_obj = get_post_type_object( $post_type );
// Get post type taxonomies.
$taxonomies = get_object_taxonomies( $post_type, 'objects' );
$out = array();
$out[] .= '<ul class=cpt-ul><li class="bloc-info-elements info-cpt">'.$post_type_obj->labels->singular_name.'</li></ul>';
foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){
// Get the terms related to post.
$terms = get_the_terms( $post->ID, $taxonomy_slug );
// If tax is hierarchical
if( is_taxonomy_hierarchical( $taxonomy_slug )) {
if ( ! empty( $terms ) ) {
switch ($taxonomy_slug) {
case "tax-plates-formes":
$info_plates_formes[] .= '<ul class="ul-info-platesformes">';
break;
default:
$info_categories[] .= '<ul class="ul-info-categories">';
}
foreach ( $terms as $term ) {
if( $term->parent == 0 ) {
continue;
}
// We switch the HTML output in order to give them custom CSS classes
switch ($taxonomy_slug) {
case "tax-plates-formes":
$info_plates_formes[] .= '<li class="info-plateformes">'.$term->name.'</li>';
break;
default:
$info_categories[] .= '<li class="li-info-categories">'.$term->name.'</li>';
}
}
}
}
// If tax isn't hierarchical
else {
if ( ! empty( $terms ) ) {
switch ($taxonomy_slug) {
case "tax-annees-de-sortie":
$info_annee_sortie[] .= '<ul class="ul-info-annee-sorties">';
break;
case "tax-editeurs":
$info_editeurs[] .= '<ul class="ul-info-editeurs">';
break;
case "tax-modele-economique":
$info_modele_economique[] .= '<ul class="ul-info-modele-economique">';
break;
}
foreach ( $terms as $term ) {
// We switch the HTML output in order to give them custom CSS classes
switch ($taxonomy_slug) {
case "tax-annees-de-sortie":
$info_annee_sortie[] .= '<li class="info-annees-de-sortie">'.$term->name.'</li>';
break;
case "tax-editeurs":
$info_editeurs[] .= '<li class="info-editeurs">'.$term->name.'</li>';
break;
case "tax-modele-economique":
$info_modele_economique[] .= '<li class="info-modele-economique">'.$term->name.'</li>';
break;
}
}
}
}
} return;
}Le but serait donc de pouvoir afficher la valeur de $info_plates_formes, qui est un STRING, en appelant ma fonction de la sorte : get_tax_terms_for_the_product($info_plates_formes)… puis pouvoir afficher la valeur de $info_categories de la même manière, en appelant ma fonction comme cela : get_tax_terms_for_the_product($info_categories).
Merci en tout cas de l’effort pour essayer de suivre 😉
- Cette réponse a été modifiée le il y a 5 années et 10 mois par Mooks.
22 janvier 2019 à 12 h 04 min en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242912On est pas loin, je viens de faire un test assez concluant. Mais c’est le scope qui me dérange ici.
Dans ton exemple, $var1 est définie à l’extérieur de la fonction. Chez moi, toutes les variables sont définies dans la fonction. Ce que j’aimerais faire, c’est que cette fonction affiche la VALEUR d’une variable directement en la passant comme paramètres.
Comme expliqué dans mon post initial, tous les noms de variables générées sont connues, mais leur VALEUR EST INCONNUE. C’est pourquoi j’aimerais les appeler via ma_fonction($var1) ou ma_fonction($var2) afin qu’elle echo le string (c’est pas des arrays, ce sera que des strings).
22 janvier 2019 à 11 h 53 min en réponse à : Impossibilité de télécharger des images dans la bibliothèque Medias #2242906Regarde à la racine de ton hébergement, ainsi qu’à la racine de ton dossier « upload ». Tu as peut-être (surement) un fichier .htaccess qui s’y trouve. Renomme le(s) en .htaccess1 et tente à nouveau d’uploader. Si ca fonctionne, ca voudra dire qu’un paramètre a été ajouté dans ce fichier .htaccess et qui limite les uploads au sein de ce dossier.
Commence déjà par là, si ca change rien il faudra tenter autre chose.
PS : si l’upload fonctionne à nouveau, ca ne voudra pas dire que le problème est réglé. Le but sera de trouver le paramètre du .htaccess à assouplir afin de te repermettre d’uploader. Là, on désactive uniquement le .htaccess pour voir si l’origine du problème se trouve ici.
- Cette réponse a été modifiée le il y a 5 années et 10 mois par Mooks.
21 janvier 2019 à 15 h 05 min en réponse à : [Résolu] get_object_taxonomies avec taxinomie hiérarchique et non hiérarchique… #2242756C’est fait 😉
21 janvier 2019 à 14 h 32 min en réponse à : [Résolu] get_object_taxonomies avec taxinomie hiérarchique et non hiérarchique… #2242750Impossible d’éditer le message, mais le problème est finalement résolu :
function get_tax_terms_for_the_product() {
// Get post by post ID.
if ( ! $post = get_post() ) {
return '';
}
// Get post type by post.
$post_type = $post->post_type;
// Get post type taxonomies.
$taxonomies = get_object_taxonomies( $post_type, 'objects' );
$out = array();
foreach ( $taxonomies as $taxonomy_slug => $taxonomy ){
// Get the terms related to post.
$terms = get_the_terms( $post->ID, $taxonomy_slug );
if( is_taxonomy_hierarchical( $taxonomy_slug )) {
if ( ! empty( $terms ) ) {
foreach ( $terms as $term ) {
if( $term->parent == 0 ) {
continue;
}
$out[] = sprintf( '<li>%1$s</li>',
esc_html( $term->name )
);
}
}
}
if( ! is_taxonomy_hierarchical( $taxonomy_slug )) {
if ( ! empty( $terms ) ) {
foreach ( $terms as $term ) {
$out[] = sprintf( '<li>%1$s</li>',
esc_html( $term->name )
);
}
}
}
} return implode( '', $out );
}4 janvier 2017 à 9 h 33 min en réponse à : Comment faire pour que mon add_action fonctionne aussi sur un formulaire? #1612045Sebastienserre, loin de moi l’idée de rendre la tâche plus difficile qu’elle ne l’est, je pensais juste que lister les 40 plugins utilisés pour la question posée était totalement inutile. Je sais ce que représente le bénévolat et ai toujours remercié les gens comme toi qui contribuent à la communauté WordPress.
Maintenant, concernant l’extension de formulaire, il peut y avoir un hook à faire effectivement directement sur le plugin et donner son nom va de soi : il s’agit de Anonymous Post Pro.
Cette extension permets le Crowd Sourcing, c’est à dire la publication de post directement depuis le frontend.
3 janvier 2017 à 21 h 41 min en réponse à : Comment faire pour que mon add_action fonctionne aussi sur un formulaire? #1611975Bonsoir,
Pour rentrer plus en détail, prenons l’exemple de mon automatisation pour l’upload d’images directement dans la fenêtre d’édition du post. Deux hooks ont été ajouté :
- Génération automatique des metadatas lors de l’upload d’une image => add_action(‘added_post_meta’, ‘auto_meta_on_upload’, 16, 4);
- Génération automatique du nom de fichier lors de l’upload dans edit.php => add_filter( ‘wp_handle_upload_prefilter’, ‘alt_rename_file_on_upload’, 21 );
Je pense qu’il faudrait ici modifier ici le hook pour le filtre et l’action afin qu’il fonctionne également dans un formulaire… mais que choisir? Je n’ai pas coller ici mes deux fonctions de génération automatique par souci de lisibilité, mais elle n’exploite que des fonctionnalités internes a PHP et wordpress.
PS : concernant les extensions en places sur mon thème, je me passe volontier de lister les 40 plugins actuellement installés (le projet sur lequel je travaille est énorme, et j’ai réduit autant que possible son nombre^^)
1 novembre 2016 à 3 h 52 min en réponse à : [Résolu] PHP : Is_singular ne fonctionne pas comme je l’entendais #1601943Impossible de rééditer le message, erf! J’ai quand même testé avant de me coucher, et ça a marché du premier du coup! Yeah baby :p De quoi dormir sur ses deux oreilles 😉
1 novembre 2016 à 3 h 41 min en réponse à : [Résolu] PHP : Is_singular ne fonctionne pas comme je l’entendais #1601942Merci pour la réponse Treenity!
Je suis arrivé à mes fins avec get_post_type() :
if( $curent_cpt == 'logiciel' || $curent_cpt == 'jeu' ) :
if( has_term( 'fiche', 'custom_type' ) && $first_word !== 'forum - ' && $first_word !== 'news - ' && $first_word !== 'videos - ') :Et donc en utilisant in_array(), ça donnerait qqc comme ça (que je testerais après un peu de sommeil^^) :
if( in_array($curent_cpt, array('logiciel', 'jeu'), true) && has_term( 'fiche', 'custom_type' ) && !in_array($first_word, array( 'forum - ', 'news - ', 'video -'), true);) :
Merci encore. Et bonne nuit!
PS : J’attend de me réveiller et tester ce que je viens d’écrire avant de mettre le sujet en résolu.
27 octobre 2016 à 23 h 17 min en réponse à : [Résolu] Fonction utilisée dans WP permettant de formatter les slugs, url…? #1601365Bonsoir treenity,
Je viens justement de trouver la fonction quelques minutes avant votre réponse. Merci.
Je met le sujet comme « résolu ».
Bonne soirée.
13 octobre 2016 à 17 h 42 min en réponse à : [Résolu] Besoin de précisions sur wp_update_post & save_post #1573126Une petite contribution supplémentaire (si jamais quelqu’un planche sur le même genre de question, ca pourra toujours servir) : le précédent code ne prenait pas en compte les accents dans le formatage du premier mot du titre. C’est chose faite dorénavant, avec un code un poil plus lourd mais qui a l’avantage de supporter tous les charsets :
function remove_accent($chaine=''){
// Liste des caractères accentués et leur valeur de remplacement
$accent = array('%C3%80'=>'A','%C3%81'=>'A','%C3%82'=>'A','%C3%83'=>'A','%C3%84'=>'A','%C3%85'=>'A','%C3%A0'=>'a','%C3%A1'=>'a','%C3%A2'=>'a','%C3%A3'=>'a','%C3%A4'=>'a','%C3%A5'=>'a','%C3%92'=>'O','%C3%93'=>'O','%C3%94'=>'O','%C3%95'=>'O','%C3%96'=>'O','%C3%98'=>'O','%C3%B2'=>'o','%C3%B3'=>'o','%C3%B4'=>'o','%C3%B5'=>'o','%C3%B6'=>'o','%C3%B8'=>'o','%C3%88'=>'E','%C3%89'=>'E','%C3%8A'=>'E','%C3%8B'=>'E','%C3%A8'=>'e','%C3%A9'=>'e','%C3%AA'=>'e','%C3%AB'=>'e','%C3%87'=>'C','%C3%A7'=>'c','%C3%8C'=>'I','%C3%8D'=>'I','%C3%8E'=>'I','%C3%8F'=>'I','%C3%AC'=>'i','%C3%AD'=>'i','%C3%AE'=>'i','%C3%AF'=>'i','%C3%99'=>'U','%C3%9A'=>'U','%C3%9B'=>'U','%C3%9C'=>'U','%C3%B9'=>'u','%C3%BA'=>'u','%C3%BB'=>'u','%C3%BC'=>'u','%C3%BF'=>'y','%C3%91'=>'N','%C3%B1'=>'n');
// Conversion des caractères accentués dans un code compatible avec les URLs
$chaine = urlencode($chaine);
foreach ($accent as $key => $value) { // On parcours le tableau accent grâce à une boucle foreach puis on remplace les caractères accentués par leurs équivalents sans accent
$chaine = str_replace($key,$value,$chaine);
}
// On décode la chaîne d'entrée grâce à la commande urldecode
return urldecode($chaine);
}Fonction de suppression d'accents compatible tous charsetsfunction auto_assign_custom_type_terms( $post_id ) {
// On reset les termes de cette taxinomie
wp_set_object_terms( $post_id, null, 'custom-type' );
// On formate le premier mot du titre
$first_word = current(explode(' ', get_the_title( $post_id ))); // Récupération du premier mot du titre
$first_word_without_maj = strtolower($first_word); // Suppression des majuscules éventuelles
$first_word_totally_formated = remove_accent($first_word_without_maj); // Remplacement d'éventuels caractères accentués en par leurs équivalents non accentués
// Valeur par défaut du terme
$tax_slug = 'fiche';
// On teste le premier mot
switch( $first_word_totally_formated ) {
case 'news':
$tax_slug = $first_word_totally_formated;
break;
case 'forum':
$tax_slug = $first_word_totally_formated;
break;
case 'videos':
$tax_slug = $first_word_totally_formated;
break;
}
// On ajoute le terme
wp_set_object_terms( $post_id, $tax_slug, 'custom-type', true );
}
add_action( 'save_post', 'auto_assign_custom_type_terms', 10, 3 );Fonction d'assignement automatique d'un terme en fonction du premier mot du titre de l'article.13 octobre 2016 à 16 h 39 min en réponse à : [Résolu] Besoin de précisions sur wp_update_post & save_post #1573102Yep, je voulais le faire, mais je me laisse toujours quelques temps avant de le faire en cas d’hypothétiques questions/problèmes qui surviendrais.
-
AuteurMessages