web-dev-qa-db-fra.com

Comment créer tag.php

Comment créer un modèle tag.php qui fonctionnera pour toutes les publications contenant des balises?

J'ai créé quelques tags comme = Nourriture, boisson et fruit

post 1 ont des étiquettes de nourriture et de boissons

post 2 ont des étiquettes de nourriture et de fruits

Comment créer une seule page pour les posts des tags?

Mon code ressemble à ceci, mais il ne montre rien.

function get_tags_post($tag_name){
    $original_query = $wp_query;
    $wp_query = null;
    $brand_name= $tag_name;
    $args=array(
        'posts_per_page'=>5, 
        'tag' => $brand_name
    );
    $wp_query = new WP_Query( $args );
    if ( have_posts() ) : while (have_posts()) : the_post();
        echo '<li>';
        single_tag_title();
        echo '</li>';
    endwhile; endif;
    $wp_query = null;
    $wp_query = $original_query;
    wp_reset_postdata();
}

S'il vous plaît, si quelqu'un sait quelle partie du code est erronée, dites-le moi.

1
Corex

Malheureusement, tout votre code est faux. Ce que vous faites est identique à query_posts , qui ne devrait jamais être utilisé. De même, n'échangez jamais la requête principale sur un type de page d'archive ou sur la page d'accueil contre une requête personnalisée.

Pour créer une page de balises, copiez simplement votre index.php et renommez-le tag.php. Voici une copie du thème fourni, le tag.php de vingt-quatorze, juste pour vous donner une idée.

<?php
/**
 * The template for displaying Tag pages
 *
 * Used to display archive-type pages for posts in a tag.
 *
 * @link http://codex.wordpress.org/Template_Hierarchy
 *
 * @package WordPress
 * @subpackage Twenty_Fourteen
 * @since Twenty Fourteen 1.0
 */

get_header(); ?>

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

            <?php if ( have_posts() ) : ?>

            <header class="archive-header">
                <h1 class="archive-title"><?php printf( __( 'Tag Archives: %s', 'pietergoosen' ), single_tag_title( '', false ) ); ?></h1>

                <?php
                    // Show an optional term description.
                    $term_description = term_description();
                    if ( ! empty( $term_description ) ) :
                        printf( '<div class="taxonomy-description">%s</div>', $term_description );
                    endif;
                ?>
            </header><!-- .archive-header -->

            <?php
                $counter = 1; //Starts counter for post column lay out

                // Start the Loop.
                while ( have_posts() ) : the_post();

        ?>
                <div class="entry-column<?php echo ( $counter%2  ? ' left' : ' right' ); ?>">

                    <?php get_template_part( 'content', get_post_format() ); ?>

                </div>  

        <?php   

            $counter++; //Update the counter

            endwhile;

        pietergoosen_pagination();

        else :
                    // If no content, include the "No posts found" template.
                get_template_part( 'content', 'none' );

                endif;
            ?>
        </div><!-- #content -->
    </section><!-- #primary -->

<?php
get_sidebar( 'content' );
get_footer();

Allez aussi voir les liens suivants

EDIT

Juste pour commenter votre code, vous devez bien indenter votre code. En tant que votre code, il est difficile de lire. Il est également difficile de déboguer.

Allez lire normes de codage/php/# indentation pour plus d'informations

2
Pieter Goosen