web-dev-qa-db-ja.com

Tag.phpの作り方

タグを含むすべての投稿に対して機能するtag.phpテンプレートを作成する方法

=食べ物、飲み物、果物のようなタグをいくつか作成しました

post 1にFood and Drinkタグがあります

post 2にFood and Fruitタグがあります

タグの投稿に対して単一のページを作成するにはどうすればよいですか。

私のコードはこのように見えますが、何も表示されませんでした。

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

コードのどの部分が間違っているのかを知っている人がいたら教えてください。

1
Corex

残念ながら、あなたのコードはすべて間違っています。あなたがしていることは query_posts と同じで、決して使うべきではありません。また、カスタムクエリのためにいかなる種類のアーカイブページやホームページ上でメインクエリを交換しないでください。

タグページを作成するには、単にあなたのindex.phpのコピーを作成し、それにtag.phpという名前を付けます。これはバンドルされたテーマのコピーです。ちょうどあなたにアイデアを与えるための20の14のtag.phpです。

<?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();

以下のリンクもチェックしてください。

_編集_

コードにコメントを付けるためだけに、コードを適切にインデントする必要があります。あなたのコードがそのままでは、読みにくくなります。デバッグも困難です。

詳しくは コーディング標準/ php /#字下げ を読んでください。

2
Pieter Goosen