Mooks (Créer un compte)

Toutes mes réponses sur les forums

15 sujets de 1 à 15 (sur un total de 57)
  • Auteur
    Messages
  • en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242962
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    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.

    en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242940
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    La 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.
    en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242931
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Je 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.

    • Cette réponse a été modifiée le il y a 5 années et 10 mois par Mooks.
    • Cette réponse a été modifiée le il y a 5 années et 10 mois par Mooks.
    en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242924
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Voici 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.
    en réponse à : Une petite aide basique svp concernant l’ajout de paramètres PHP #2242912
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    On 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).

    • Cette réponse a été modifiée le il y a 5 années et 10 mois par Mooks.
    • Cette réponse a été modifiée le il y a 5 années et 10 mois par Mooks.
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Regarde à 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.
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    C’est fait 😉

    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Impossible 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 );
    }

    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Sebastienserre, 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.

    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Bonsoir,

    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^^)

    en réponse à : [Résolu] PHP : Is_singular ne fonctionne pas comme je l’entendais #1601943
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Impossible 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 😉

    en réponse à : [Résolu] PHP : Is_singular ne fonctionne pas comme je l’entendais #1601942
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Merci 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.

    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Bonsoir 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.

    en réponse à : [Résolu] Besoin de précisions sur wp_update_post & save_post #1573126
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Une 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 charsets

    function 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.

    en réponse à : [Résolu] Besoin de précisions sur wp_update_post & save_post #1573102
    Mooks
    Participant
    Padawan WordPress
    87 contributions

    Yep, 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.

15 sujets de 1 à 15 (sur un total de 57)