web-dev-qa-db-fra.com

Filtrer et modifier le lien entrée-pied de page sur vingt-sept

J'utilise actuellement le thème des enfants de vingt-sept ans et je dois modifier le lien sur la page de publication unique située en dessous de l'article . Son href est en cours d'envoi à la catégorie du poste.

Les filtres de wp étant nouveaux pour moi, je ne sais vraiment pas quel filtre utiliser dans ce cas. Aussi, j'aimerais savoir, comment puis-je savoir ou où trouver ces filtres?

1
Facegame_Cz

Le lien de catégorie auquel vous faites référence, qui est affiché sous le contenu de la page de publication unique n'est pas ajouté avec un filtre. Il est affiché via une fonction appelée twentyseventeen_entry_footer().

Si vous consultez les fichiers de thèmes, vous trouverez la fonction sur la ligne 59, dans le fichier:

/wp-content/themes/twentyseventeen/inc/template-tags.php

Voici le code des fonctions twentyseventeen_entry_footer():

if ( ! function_exists( 'twentyseventeen_entry_footer' ) ) :
    /**
     * Prints HTML with meta information for the categories, tags and comments.
     */
    function twentyseventeen_entry_footer() {

        /* translators: used between list items, there is a space after the comma */
        $separate_meta = __( ', ', 'twentyseventeen' );

        // Get Categories for posts.
        $categories_list = get_the_category_list( $separate_meta );

        // Get Tags for posts.
        $tags_list = get_the_tag_list( '', $separate_meta );

        // We don't want to output .entry-footer if it will be empty, so make sure its not.
        if ( ( ( twentyseventeen_categorized_blog() && $categories_list ) || $tags_list ) || get_edit_post_link() ) {

            echo '<footer class="entry-footer">';

            if ( 'post' === get_post_type() ) {
                if ( ( $categories_list && twentyseventeen_categorized_blog() ) || $tags_list ) {
                    echo '<span class="cat-tags-links">';

                        // Make sure there's more than one category before displaying.
                    if ( $categories_list && twentyseventeen_categorized_blog() ) {
                        echo '<span class="cat-links">' . twentyseventeen_get_svg( array( 'icon' => 'folder-open' ) ) . '<span class="screen-reader-text">' . __( 'Categories', 'twentyseventeen' ) . '</span>' . $categories_list . '</span>';
                    }

                    if ( $tags_list && ! is_wp_error( $tags_list ) ) {
                        echo '<span class="tags-links">' . twentyseventeen_get_svg( array( 'icon' => 'hashtag' ) ) . '<span class="screen-reader-text">' . __( 'Tags', 'twentyseventeen' ) . '</span>' . $tags_list . '</span>';
                    }

                    echo '</span>';
                }
            }

            twentyseventeen_edit_link();

            echo '</footer> <!-- .entry-footer -->';
        }
    }
endif;

Comme vous devriez le voir dans le code de fonction d'origine, la première ligne est la suivante:

if ( ! function_exists( 'twentyseventeen_entry_footer' ) ) :

Donc, si la fonction existe déjà, le code dans le thème parent sera ignoré. En raison du fonctionnement de WordPress, il charge d’abord le fichier functions.php des thèmes enfants, avant le thème parent.

Afin de modifier ce code, vous devez copier ou créer votre propre fonction twentyseventeen_entry_footer() dans votre fichier functions.php de thèmes enfants (sans la ligne function_exists() et sans la dernière ligne endif;).

Par conséquent, en créant la fonction twentyseventeen_entry_footer() dans votre thème enfant, cela remplacera la fonctionnalité par défaut de la fonction de thèmes parent.

Mise à jour Pour supprimer complètement ce lien de catégorie avec un remplacement de modèle:

A la ligne 24 du fichier single.php de Twenty Seventeen themes, vous devriez voir le code suivant:

get_template_part( 'template-parts/post/content', get_post_format() );

Si vous regardez ensuite dans le dossier référencé dans la ligne ci-dessus:

/wp-content/themes/twentyseventeen/template-parts/post/

Vous verrez différents fichiers 'content' PHP pour les différents formats de publication. La valeur par défaut pour les publications normales est content.php

Copiez simplement ce fichier dans votre thème enfant dans un nouveau dossier appelé /template-parts/post/ dans votre thème enfant, puis supprimez les lignes qui font référence à la fonction twentyseventeen_entry_footer() (lignes n ° 73 à n ° 77):

<?php
if ( is_single() ) {
    twentyseventeen_entry_footer();
}
?>

Vous pouvez utiliser des remplacements de modèle pour tous les fichiers de modèle du dossier racine du thème parent ou du dossier /template-parts/. Copiez simplement le fichier dans votre thème enfant dans la même structure de dossiers.

NB Cependant, il pourrait être plus simple, dans ce cas particulier, de créer simplement une fonction vide/vide twentyseventeen_entry_footer() dans votre thème enfant - cela dépend simplement du fait que vous souhaitiez toujours que cette fonction fonctionne pour d'autres types de publications ou formats de publication (si elle est utilisée ailleurs ) ...

1
Mat

Je viens en retard à cette soirée, mais je viens de constater que la méthode suggérée ci-dessus n'est PAS recommandée.

Reportez-vous à cet article (" get_parent_theme_file_path vs. get_template_directory ") et à cet article (" get_theme_file_uri et get_theme_file_path ") (mentionné dans l'article). Ils sont tous deux écrits par Bravokeyl.

Comme indiqué ci-dessus, l'affichage du pied de page est piloté par la fonction "vingt-septième-tireur_football" sur la ligne 59 de '/wp-content/themes/twentyseventeen/inc/template-tags.php'. La question qui m'a dérangé était ... "Comment le système a-t-il su activer cette fonction?". Si vous examinez les lignes parent 'functions.php' n ° 566 à n ° 586, vous constaterez que tous les fichiers du dossier 'inc' sont "obligatoires". C'est le déclencheur de l'activation de "twentyseventeen_entry_footer". La méthode utilisée pour "require" les fichiers du dossier 'inc' utilisent une nouvelle fonction (à partir de Vn4.7) appelée " get_parent_theme_file_path ".

Bravokeyl fournit une excellente discussion sur ce que la fonction fait et pourquoi. Il y a aussi un exemple de la façon dont on peut/devrait déplacer le contrôle des fichiers inclus du thème parent au thème enfant.

Dans mon cas, j'ai créé un nouveau dossier (inc) dans mon thème enfant et j'ai copié le parent template-tags.php vers une copie de l'enfant. Voici mon code pour template-tags.php. Cela a fonctionné et est beaucoup plus facile et plus fiable que les alternatives suggérées.

add_filter('parent_theme_file_path','twentyseventeen_parent_template_tags',10,2);
function twentyseventeen_parent_template_tags($path,$file){
    if('inc/template-tags.php' == $file) {
        $gsd=get_stylesheet_directory();
        $file = 'inc/template-tags.php';
        $path = $gsd."/".$file;
 }
 return $path;
}
0
Tedinoz