[Résolu] Thème enfant : trop tard ? (Créer un compte)

  • Statut : non résolu
15 sujets de 16 à 30 (sur un total de 34)
  • Auteur
    Messages
  • #901145
    Placard
    Membre
    Chevalier WordPress
    133 contributions

    J’ai trouvé beyond compare, ça devrait faire l’affaire. Je mange et je reviens tester.

    #901146
    Placard
    Membre
    Chevalier WordPress
    133 contributions

    Voilà les différence que trouve Beyond Compare :

    le thème original (parent de l’enfant) :

    [c] * support for custom background
    add_theme_support( ‘custom-background’ ); [/c]

    l’ex-thème actif :

    [c] * Enable support for Post Thumbnails
    add_theme_support( ‘post-thumbnails’ ); [/c]

    #901147
    Guy
    Participant
    Maître WordPress
    14817 contributions

    je ne pense pas que cela soit vraiment le bon résultat.

    Peux tu afficher ici les deux fichiers et en utilisant la balise code, le gros c noir au dessus. Tu te sers de la balise [c] ce n’est pas [ code ]

    #901148
    Flobogo
    Modérateur
    Maître WordPress
    20088 contributions

    @ Placard :
    Je suis une ex-débutante, alors, ravie d’avoir pu t’aider pour créer ton thème-enfant 😉

    Quelques petites précisions pour compléter les infos de Guy et ce que tu as déjà découvert :
    – surtout, conserve bien les thèmes Twenty-Ten, tewenty-Eleven et twenty Twelve (au moins les deux derniers). Ce sont des thèmes dits « par défaut » –> ils sont installés d’office avec toute nouvelle install’ de WordPress. C’est vrai que pour l’instant, ils ne te servent à rien pour ton thème Mog ni pour Mog-enfant, mais si un jour tu as un problème quelconque, le début du dépannage passe par une vérification du thème en activant un des thèmes par défaut ! Et là, tu seras content de l’avoir gardé.

    – le seul fichier indispensable pour le thème-enfant, c’est syle.css (et exactement celui-là, avec ce nom-là), tel que tu l’as construit avec les indications que j’ai données.
    Mais tu peux ensuite rajouter tout autre fichier venant de ton thème de départ pour le modifier également : ça peut être le footer.php ou le 404.php, ou bien single.php ou bien encore le fichier main.css [quoique Guy semble dire que certains fichiers ne peuvent pas être « filialisés », alors j’ai un doute 😕 ]

    – Comme tu l’as constaté, tu peux y accéder directement par ton interface admin’, mais ce sont les originaux du thème-parent.
    Le mieux, c’est de copier le fichier d’origine (par exemple, celui que tu conserves en sécurité sur ton ordi), et tu l’uploades dans ton dossier mog-enfant par Filezilla.
    Et bien sûr, avant upload (ou après, en passant par Filezilla), tu apportes les modif’ que tu veux , sans oublier d’encoder en UTF8 sans BOM. Ensuite, tu retrouveras ce fichier dans ton éditeur du thème-enfant, directement.

    Tous ces fichiers-enfants seront prioritaires lors du chargement du thème : si un fichier-enfant existe, c’est lui qui est utilisé, en remplacement du fichier du thème d’origine. Par contre, si le fichier n’existe pas dans le dossier theme-enfant, WordPress va chercher le fichier dont il a besoin dans le thème-parent. (bien foutu, non ?)

    Seul le fichier functions.php a un fonctionnement à part : le fichier functions.php situé dans le theme-enfant s’ajoute en quelque sorte au fichier functions du thème-parent. Ils se cumulent au lieu de se remplacer.

    Guy t’a envoyé vers le Codex en anglais, mais (sauf si tu causes english very perfectly), je t’invite à lire la même page du Codex en français : elle est bien traduite et assez facile à comprendre.

    Pour toute la suite de la procédure, Guy sera de bien meilleur conseil que moi.

    #901149
    Placard
    Membre
    Chevalier WordPress
    133 contributions

    D’accord; voilà donc l’original :

     __( ‘Primary Menu’, ‘mog’ ),
    ) );

    /**
    * Enable support for Post Formats
    */
    add_theme_support( ‘post-formats’, array( ‘aside’, ‘image’, ‘video’, ‘quote’, ‘link’ ) );
    }
    endif; // mog_setup
    add_action( ‘after_setup_theme’, ‘mog_setup’ );

    /**
    * Setup the WordPress core custom background feature.
    *
    * Use add_theme_support to register support for WordPress 3.4+
    * as well as provide backward compatibility for WordPress 3.3
    * using feature detection of wp_get_theme() which was introduced
    * in WordPress 3.4.
    *
    * @todo Remove the 3.3 support when WordPress 3.6 is released.
    *
    * Hooks into the after_setup_theme action.
    */
    function mog_register_custom_background() {
    $args = array(
    ‘default-color’ => ‘ffffff’,
    ‘default-image’ =>  »,
    );

    $args = apply_filters( ‘mog_custom_background_args’, $args );

    if ( function_exists( ‘wp_get_theme’ ) ) {
    add_theme_support( ‘custom-background’, $args );
    } else {
    define( ‘BACKGROUND_COLOR’, $args[‘default-color’] );
    if ( ! empty( $args[‘default-image’] ) )
    define( ‘BACKGROUND_IMAGE’, $args[‘default-image’] );
    add_custom_background();
    }
    }
    add_action( ‘after_setup_theme’, ‘mog_register_custom_background’ );

    /**
    * Register widgetized area and update sidebar with default widgets
    *
    * @since Mog 1.0
    */
    function mog_widgets_init() {
    register_sidebar( array(
    ‘name’ => __( ‘Sidebar’, ‘mog’ ),
    ‘id’ => ‘sidebar-1’,
    ‘before_widget’ => ‘<aside id="%1$s" class="widget %2$s">‘,
    ‘after_widget’ => ‘</aside>‘,
    ‘before_title’ => ‘<h1 class="widget-title">‘,
    ‘after_title’ => ‘</h1>‘,
    ) );
    }
    add_action( ‘widgets_init’, ‘mog_widgets_init’ );

    /**
    * Enqueue scripts and styles
    */
    function mog_scripts() {
    wp_enqueue_style( ‘opensans’, ‘http://fonts.googleapis.com/css?family=Open+Sans’);
    wp_enqueue_style( ‘josefinslab’, ‘http://fonts.googleapis.com/css?family=Josefin+Slab:600’);
    wp_enqueue_style( ‘style’, get_stylesheet_uri() );
    wp_enqueue_style( ‘main’, get_template_directory_uri() . ‘/main.css’ );

    wp_enqueue_script( ‘small-menu’, get_template_directory_uri() . ‘/js/small-menu.js’, array( ‘jquery’ ), ‘20120206’, true );

    if ( is_singular() && comments_open() && get_option( ‘thread_comments’ ) ) {
    wp_enqueue_script( ‘comment-reply’ );
    }

    if ( is_singular() && wp_attachment_is_image() ) {
    wp_enqueue_script( ‘keyboard-image-navigation’, get_template_directory_uri() . ‘/js/keyboard-image-navigation.js’, array( ‘jquery’ ), ‘20120202’ );
    }
    }
    add_action( ‘wp_enqueue_scripts’, ‘mog_scripts’ );

    /**
    * Implement the Custom Header feature
    */
    //require( get_template_directory() . ‘/inc/custom-header.php’ );

    et l’ex-actif :

     __( ‘Primary Menu’, ‘mog’ ),
    ) );

    /**
    * Enable support for Post Formats
    */
    add_theme_support( ‘post-formats’, array( ‘aside’, ‘image’, ‘video’, ‘quote’, ‘link’ ) );
    }
    endif; // mog_setup
    add_action( ‘after_setup_theme’, ‘mog_setup’ );

    /**
    * Setup the WordPress core custom background feature.
    *
    * Use add_theme_support to register support for WordPress 3.4+
    * as well as provide backward compatibility for WordPress 3.3
    * using feature detection of wp_get_theme() which was introduced
    * in WordPress 3.4.
    *
    * @todo Remove the 3.3 support when WordPress 3.6 is released.
    *
    * Hooks into the after_setup_theme action.
    */
    function mog_register_custom_background() {
    $args = array(
    ‘default-color’ => ‘ffffff’,
    ‘default-image’ =>  »,
    );

    $args = apply_filters( ‘mog_custom_background_args’, $args );

    if ( function_exists( ‘wp_get_theme’ ) ) {
    add_theme_support( ‘custom-background’, $args );
    } else {
    define( ‘BACKGROUND_COLOR’, $args[‘default-color’] );
    if ( ! empty( $args[‘default-image’] ) )
    define( ‘BACKGROUND_IMAGE’, $args[‘default-image’] );
    add_custom_background();
    }
    }
    add_action( ‘after_setup_theme’, ‘mog_register_custom_background’ );

    /**
    * Register widgetized area and update sidebar with default widgets
    *
    * @since Mog 1.0
    */
    function mog_widgets_init() {
    register_sidebar( array(
    ‘name’ => __( ‘Sidebar’, ‘mog’ ),
    ‘id’ => ‘sidebar-1’,
    ‘before_widget’ => ‘<aside id="%1$s" class="widget %2$s">‘,
    ‘after_widget’ => ‘</aside>‘,
    ‘before_title’ => ‘<h1 class="widget-title">‘,
    ‘after_title’ => ‘</h1>‘,
    ) );
    }
    add_action( ‘widgets_init’, ‘mog_widgets_init’ );

    /**
    * Enqueue scripts and styles
    */
    function mog_scripts() {
    wp_enqueue_style( ‘opensans’, ‘http://fonts.googleapis.com/css?family=Open+Sans’);
    wp_enqueue_style( ‘josefinslab’, ‘http://fonts.googleapis.com/css?family=Josefin+Slab:600’);
    wp_enqueue_style( ‘style’, get_stylesheet_uri() );
    wp_enqueue_style( ‘main’, get_template_directory_uri() . ‘/main.css’ );

    wp_enqueue_script( ‘small-menu’, get_template_directory_uri() . ‘/js/small-menu.js’, array( ‘jquery’ ), ‘20120206’, true );

    if ( is_singular() && comments_open() && get_option( ‘thread_comments’ ) ) {
    wp_enqueue_script( ‘comment-reply’ );
    }

    if ( is_singular() && wp_attachment_is_image() ) {
    wp_enqueue_script( ‘keyboard-image-navigation’, get_template_directory_uri() . ‘/js/keyboard-image-navigation.js’, array( ‘jquery’ ), ‘20120202’ );
    }
    }
    add_action( ‘wp_enqueue_scripts’, ‘mog_scripts’ );

    /**
    * Implement the Custom Header feature
    */
    //require( get_template_directory() . ‘/inc/custom-header.php’ );

    #901150
    Placard
    Membre
    Chevalier WordPress
    133 contributions

    @Flogobo : tu as fort bien fait de me préciser de conserver les 3 thèmes, j’étais sur le point de les éradiquer, par vengeance ! Je les laisse où ils sont.

    J’ai fini par comprendre le principe du fichier enfant. Il est malin, quand même, ce WordPress…

    Par contre, l’import de main.css & Cie que j’ai tenté s’est révélé inopérant.

    Je parle très mal l’anglais mais j’avais trouvé la version française en haut de la page. Par contre, je n’ai rien vu sur la comparaison des fichiers; alors j’ai fait une recherche et installé Beyond Compare; je ne sais pas si c’est un bon soft, mais je suis plutôt content de l’avoir trouvé; je sens que ça va me simplifier la vie.

    J’ai la chance d’être encadré par un ex-débutante (je te trouve un peu modeste quand même…) et un pro de chez pro; si je n’y arrive pas, je reviens au boulier et j’arrête d’emm… le monde !…

    #901151
    Guy
    Participant
    Maître WordPress
    14817 contributions

    d’accord, on peut docn voir plusieurs choses, d’une part tu n’as fait que rajouter la prise en charge des miniatures et d’autre part, le thème n’a pas prévu que le fichier main.css puisse être appelé à partir d’un thème enfant (il va chercher explicitement le fichier dans le thème parent)

    – Copier le fichier main.css modifié dans le répertoire du thème enfant (en fait il suffirait que ce nouveau fichier ne contienne que les règles modifiées)
    – Créer un fichier functions.php dans le thème enfant et y placer:

    <?php
    /**
    * Theme enfant de Mog: functions and definitions
    */

    function mes_options_setup() {
    /**
    * Enable support for Post Thumbnails
    */
    add_theme_support( 'post-thumbnails' );
    }
    add_action( 'after_setup_theme', 'mes_options_setup' );


    /**
    * Enqueue scripts and styles
    */
    function mes_scripts() {
    wp_enqueue_style( 'mon_main', get_stylesheet_directory_uri() . '/main.css', array('main') );
    }
    add_action( 'wp_enqueue_scripts', 'mes_scripts' );

    lorsque cela sera fait et tournera sans erreurs, on passera au fichier header.php.

    #901152
    Placard
    Membre
    Chevalier WordPress
    133 contributions

    C’est fait et, miracle, functions.php apparait maintenant dans l’éditeur ainsi que main css, et mon site ressemble à peu près à ce qu’il était !

    J’y croyais plus…

    #901153
    Guy
    Participant
    Maître WordPress
    14817 contributions

    on va faire la même chose, comparer les fichiers header.php: celui du thème original et celui que tu avais modifié.

    Il faut faire cela pour tous les fichiers que tu avais modifié.

    #901154
    Placard
    Membre
    Chevalier WordPress
    133 contributions

    Ok. Voilà donc l’original header.php :

    <?php
    /**
    * The Header for our theme.
    *
    * Displays all of the section and everything up till <div id="main">
    *
    * @package Mog
    * @since Mog 1.0
    */
    ?>
    <html >

    <meta charset=" » />

    <title></title>

    <link rel="pingback" href=" » />
    <!--[if lt IE 9]>-->
    <script src="/js/html5.js » type= »text/javascript »>




    <body >
    <div id="page" class="hfeed site">

    <header id="masthead" class="site-header" role="banner">
    <hgroup>
    <h1 class="site-title"><a href=" » title= » » rel= »home »></a></h1>
    <h2 class="site-description"></h2>
    </hgroup>

    <nav role="navigation" class="site-navigation main-navigation">
    <h1 class="assistive-text"></h1>
    <div class="assistive-text skip-link"><a href="#content" title=" »></a></div>

    ‘primary’,
    ‘container_class’ => ‘menu’,
    ‘menu_class’ =>  »,
    ‘fallback_cb’ => ‘fallback_nav’) ); ?>
    </nav><!-- .site-navigation .main-navigation -->
    </header><!-- #masthead .site-header -->

    <div id="main" class="site-main">

    et l’ex-actif :

    <?php
    /**
    * The Header for our theme.
    *
    * Displays all of the section and everything up till <div id="main">
    *
    * @package Mog
    * @since Mog 1.0
    */
    ?>
    <html >

    <meta charset=" » />

    <title></title>

    <link rel="pingback" href=" » />
    <!--[if lt IE 9]>-->
    <script src="/js/html5.js » type= »text/javascript »>




    <body >
    <div id="page" class="hfeed site">

    <header id="masthead" class="site-header" role="banner">
    <hgroup>
    <h1 class="site-title"><a href=" » title= » » rel= »home »></a></h1>
    <h2 class="site-description"></h2>
    </hgroup>

    <nav role="navigation" class="site-navigation main-navigation">
    <h1 class="assistive-text"></h1>
    <div class="assistive-text skip-link"><a href="#content" title=" »></a></div>

    ‘primary’,
    ‘container_class’ => ‘menu’,
    ‘menu_class’ =>  »,
    ‘fallback_cb’ => ‘fallback_nav’) ); ?>
    </nav><!-- .site-navigation .main-navigation -->
    </header><!-- #masthead .site-header -->



    <div id="main" class="site-main">

    Je ne crois pas avoir modifié d’autres fichiers que style.css, main.css, header.php, functions php et archives.php. Auras-tu besoin d’archives.php ?

    #901155
    luciole135
    Participant
    Maître WordPress
    13714 contributions

    Sous Windows, il existe un logiciel qui permet de comparer deux fichiers : Winmerge http://www.framasoft.net/article1980.html

    #901156
    Placard
    Membre
    Chevalier WordPress
    133 contributions

    @Luciole : Winmerge est mieux que Beyond compare ?

    #901157
    luciole135
    Participant
    Maître WordPress
    13714 contributions
    Placard wrote:
    @Luciole : Winmerge est mieux que Beyond compare ?

    je ne sais pas, je n’ai pas essayé Beyond compare, si vous savez déjà utiliser Beyond compare, continuez avec, ce sera ça de moins à apprendre !

    #901158
    Guy
    Participant
    Maître WordPress
    14817 contributions

    tu peux mettre l’ancien fichier header.php dans le thème enfant.

    Et oui, tous les fichiers modifiés, donc aussi archives.php 🙂

    #901159
    Placard
    Membre
    Chevalier WordPress
    133 contributions

    archives.php est le dernier que j’ai modifié, et uniquement pour éliminer l’affichage de Category archives:

    Voilà l’original :



    <section id="primary" class="content-area">
    <div id="content" class="site-content" role="main">



    <header class="page-header">
    <h1 class="page-title">
    <?php
    if ( is_category() ) {
    printf( __( 'Category Archives: %s', 'mog' ), '<span>‘ . single_cat_title(  », false ) . ‘</span>‘ );

    } elseif ( is_tag() ) {
    printf( __( ‘Tag Archives: %s’, ‘mog’ ), ‘<span>‘ . single_tag_title(  », false ) . ‘</span>‘ );

    } elseif ( is_author() ) {
    /* Queue the first post, that way we know
    * what author we’re dealing with (if that is the case).
    */
    the_post();
    printf( __( ‘Author Archives: %s’, ‘mog’ ), ‘<span class="vcard"><a class="url fn n" title="' . esc_attr( get_the_author() ) . '" rel="me">‘ . get_the_author() . ‘</a></span>‘ );
    /* Since we called the_post() above, we need to
    * rewind the loop back to the beginning that way
    * we can run the loop properly, in full.
    */
    rewind_posts();

    } elseif ( is_day() ) {
    printf( __( ‘Daily Archives: %s’, ‘mog’ ), ‘<span>‘ . get_the_date() . ‘</span>‘ );

    } elseif ( is_month() ) {
    printf( __( ‘Monthly Archives: %s’, ‘mog’ ), ‘<span>‘ . get_the_date( ‘F Y’ ) . ‘</span>‘ );

    } elseif ( is_year() ) {
    printf( __( ‘Yearly Archives: %s’, ‘mog’ ), ‘<span>‘ . get_the_date( ‘Y’ ) . ‘</span>‘ );

    } else {
    _e( ‘Archives’, ‘mog’ );

    }
    ?>
    </h1>
    <?php
    if ( is_category() ) {
    // show an optional category description
    $category_description = category_description();
    if ( ! empty( $category_description ) )
    echo apply_filters( 'category_archive_meta', '<div class="taxonomy-description">‘ . $category_description . ‘</div>‘ );

    } elseif ( is_tag() ) {
    // show an optional tag description
    $tag_description = tag_description();
    if ( ! empty( $tag_description ) )
    echo apply_filters( ‘tag_archive_meta’, ‘<div class="taxonomy-description">‘ . $tag_description . ‘</div>‘ );
    }
    ?>
    </header><!-- .page-header -->


















    </div><!-- #content .site-content -->
    </section><!-- #primary .content-area -->

    Et voilà l’ex-actif :



    <section id="primary" class="content-area">
    <div id="content" class="site-content" role="main">



    <header class="page-header">
    <h1 class="page-title">
    <?php
    if ( is_category() ) {
    printf( __( 'Category Archives: %s', 'mog' ), '<span>‘ . single_cat_title(  », false ) . ‘</span>‘ );

    } elseif ( is_tag() ) {
    printf( __( ‘Tag Archives: %s’, ‘mog’ ), ‘<span>‘ . single_tag_title(  », false ) . ‘</span>‘ );

    } elseif ( is_author() ) {
    /* Queue the first post, that way we know
    * what author we’re dealing with (if that is the case).
    */
    the_post();
    printf( __( ‘Author Archives: %s’, ‘mog’ ), ‘<span class="vcard"><a class="url fn n" title="' . esc_attr( get_the_author() ) . '" rel="me">‘ . get_the_author() . ‘</a></span>‘ );
    /* Since we called the_post() above, we need to
    * rewind the loop back to the beginning that way
    * we can run the loop properly, in full.
    */
    rewind_posts();

    } elseif ( is_day() ) {
    printf( __( ‘Daily Archives: %s’, ‘mog’ ), ‘<span>‘ . get_the_date() . ‘</span>‘ );

    } elseif ( is_month() ) {
    printf( __( ‘Monthly Archives: %s’, ‘mog’ ), ‘<span>‘ . get_the_date( ‘F Y’ ) . ‘</span>‘ );

    } elseif ( is_year() ) {
    printf( __( ‘Yearly Archives: %s’, ‘mog’ ), ‘<span>‘ . get_the_date( ‘Y’ ) . ‘</span>‘ );

    } else {
    _e( ‘Archives’, ‘mog’ );

    }
    ?>
    </h1>
    <?php
    if ( is_category() ) {
    // show an optional category description
    $category_description = category_description();
    if ( ! empty( $category_description ) )
    echo apply_filters( 'category_archive_meta', '<div class="taxonomy-description">‘ . $category_description . ‘</div>‘ );

    } elseif ( is_tag() ) {
    // show an optional tag description
    $tag_description = tag_description();
    if ( ! empty( $tag_description ) )
    echo apply_filters( ‘tag_archive_meta’, ‘<div class="taxonomy-description">‘ . $tag_description . ‘</div>‘ );
    }
    ?>
    </header><!-- .page-header -->


















    </div><!-- #content .site-content -->
    </section><!-- #primary .content-area -->

15 sujets de 16 à 30 (sur un total de 34)
  • Vous devez être connecté pour répondre à ce sujet.