[Résolu] Forcer l’utilisation d’une fonction dans un thème enfant (Créer un compte)

  • WordPress :6.3
  • Statut : résolu
8 sujets de 1 à 8 (sur un total de 8)
  • Auteur
    Messages
  • #2463062
    playmo44
    Participant
    Initié WordPress
    15 contributions

    Bonjour,

    J’ai créé un thème enfant pour personnaliser mon thème avec WordPress 6.3.2

    Néanmoins, lorsque je mets à jour le thème parent, il ne m’affiche plus correctement le widget Galerie. Donc j’ai cherché dans la documentation et il s’avère que c’est parce que le thème prend en charge HTML5.

    OK, donc je suis allé dans le thème parent et j’ai désactivé le fait d’utiliser le HTML5 pour la galerie, simplement en commentant la ligne. Résultat, cela marche, mais je voudrais que cela soit durable, car à la prochaine mise à jour, cela va être écrasé par la version du créateur.

     

    J’ai donc décidé de mettre le code dans le fichier functions.php. Le problème est que le fichier enfant se charge avant le parent et donc c’est le parent qui a la priorité.

    Néanmoins, dans la documentation, il est précisé qu’il est possible de remplacer une fonction PHP du thème parent simplement en le déclarant au préalable. J’ai donc essayé, mais cela ne marche pas.

     

    Voici ce que j’ai ajouté à mon fichier functions.php :

    if (! function_exists ('theme_special_gall')) {
    theme_special_gall fonction () {

    add_theme_support(
    'html5',
    array(
    'comment-form',
    'comment-list',
    //'gallery',
    'caption',
    'style',
    'script',
    'navigation-widgets',
    )
    );
    }
    }

    Résultat, j’ai un message d’erreur si je recharge la page et rien ne s’affiche.

    Sauriez-vous m’aider, SVP ?

    Je vous en remercie par avance.

     

    Playmo44

     

    #2463064
    playmo44
    Participant
    Initié WordPress
    15 contributions

    Désolé,

    Je n’avais pas fait attention car le copier coller du code était traduit en français donc maintenant, cela marche sans message d’erreur.

    if (! function_exists ('theme_special_gall')) {
    function theme_special_gall() {

    add_theme_support(
    'html5',
    array(
    'comment-form',
    'comment-list',
    //'gallery',
    'caption',
    'style',
    'script',
    'navigation-widgets',
    )
    );
    }
    }

    Néanmoins, c’est toujours le parent qui prime.

     

    Sauriez-vous comme faire pour que cela soit pris en compte ?

    #2463072
    mathieu42
    Participant
    Maître WordPress
    2013 contributions

    quel est le thème parent ?

     

    #2463074
    playmo44
    Participant
    Initié WordPress
    15 contributions

    Bonsoir,

    Il s’agit de precious-Lite

     

    Cordialement

    #2463075
    mathieu42
    Participant
    Maître WordPress
    2013 contributions

    je ne trouve pas de fonction « theme_special_gall » dans ce thème.

    en revanche, j’ai trouvé l’ajout du support de l’html 5 dans la fonction « precious_lite_setup ».

    #2463076
    playmo44
    Participant
    Initié WordPress
    15 contributions

    Bonsoir,

    Merci Mathieu42

    theme_special_gall est une fonction que j’ai créé car dans le modèle de la documentation, il est mentionné quil fallait mettre :

    if ( ! function_exists( 'theme_special_nav' ) ) {
    function theme_special_nav() {
    // Do something.
    }
    }

    En fait dans le thème, le code est :

    function precious_lite_setup() {

    if ( ! isset( $content_width ) )
    $content_width = 640; /* pixels */

    load_theme_textdomain( 'precious-lite', get_template_directory() . '/languages' );
    add_theme_support( 'automatic-feed-links' );
    add_theme_support( 'post-thumbnails' );
    add_theme_support( 'woocommerce' );
    add_theme_support( 'title-tag' );
    add_theme_support( 'custom-header' );
    add_theme_support( 'custom-logo', array(
    'height' => 240,
    'width' => 240,
    'flex-height' => true,
    ) );
    add_image_size('precious-lite-homepage-thumb',240,145,true);
    register_nav_menus( array(
    'primary' => __( 'Primary Menu', 'precious-lite' ),
    'footer' => __('Footer Menu', 'precious-lite'),
    ) );
    add_theme_support( 'custom-background', array(
    'default-color' => 'ffffff'
    ) );
    // Add support for Block Styles.
    add_theme_support( 'wp-block-styles' );

    // Add support for full and wide align images.
    add_theme_support( 'align-wide' );

    add_filter('use_widgets_block_editor', '__return_false');

    /*
    * Switch default core markup for search form, comment form, and comments
    * to output valid HTML5.
    */
    add_theme_support(
    'html5',
    array(
    'comment-form',
    'comment-list',
    'gallery',
    'caption',
    'style',
    'script',
    'navigation-widgets',
    )
    );

    // Add support for responsive embedded content.
    add_theme_support( 'responsive-embeds' );
    add_editor_style( 'editor-style.css' );
    }

    Ce qui m’intéresse  c’est que le code :

    	add_theme_support(
    'html5',
    array(
    'comment-form',
    'comment-list',
    //'gallery',
    'caption',
    'style',
    'script',
    'navigation-widgets',
    )
    );

    soit prise en compte en priorité lors du chargement du site.

    Afin que je puisse utiliser :

    if ( apply_filters( 'use_default_gallery_style', ! $html5 ) ) {

    du fichier wp-includes/media.php

    • Cette réponse a été modifiée le il y a 8 mois et 2 semaines par playmo44.
    • Cette réponse a été modifiée le il y a 8 mois et 2 semaines par playmo44.
    • Cette réponse a été modifiée le il y a 8 mois et 2 semaines par playmo44.
    #2463080
    mathieu42
    Participant
    Maître WordPress
    2013 contributions

    d’après ce que j’ai vu dans le code, je vous conseille de copier toute la fonction « precious_lite_setup » dans le fichier functions.php du thème enfant.

    à partir de là, cette fonction du thème parent ne sera plus lancée et vous pourrez personnaliser le code dans le thème enfant en gardant tout le code et en ajoutant le commentaire pour « gallery ».

    #2463081
    playmo44
    Participant
    Initié WordPress
    15 contributions

    Bonsoir,

    Merci beaucoup Mathieu42,

    J’ai mis toute la fonction

    function precious_lite_setup() {

    dans

    if (! function_exists ('theme_special_gall')) { 

    }

    et j’ai modifié ce qui m’intéressait

    Cela marche correctement.

    Bien cordialement

    Playmo44

8 sujets de 1 à 8 (sur un total de 8)
  • Vous devez être connecté pour répondre à ce sujet.