web-dev-qa-db-ja.com

カスタム分類テンプレートが機能しない

propertyという名前のカスタム投稿タイプを作成しました。この投稿タイプにはcityという分類法が添付されています。 torontotaiwandhakaのようないくつかの都市(用語)があります。

都市下のすべての投稿を表示できるテンプレートを作成したいです。ファイルtaxonomy-city.phpを作成しましたが、動作していません。

これが私のtaxonomy-city.phpファイルのコードです。

<?php
/*
 * Template name: City
*/
get_header();

?>
<div id="page_content">
        <div class="page-wrapper">

            <?php if (have_posts()) : ?><?php while (have_posts()) : the_post(); ?>
            <div id="page_content_wrapper">

                <div id="careers_table">
                    <p class="content_text">asdsd</p>

                </div>

                    <?php endwhile; ?>
                    <?php else : ?>
                            <div class="post">
                                <h3><?php _e('404 Error&#58; Not Found', 'cmeasytheme'); ?></h3>
                            </div>
                    <?php endif; ?> 

            </div>
            <div style="clear:both;"></div>
        </div>
        </div>
<?php get_footer(); ?>

すべてが表示されますが、ループ内には何も表示されません。

私もこれらのリンクを訪れましたが、誰も助けにならなかった

まず第一に、taxonomy-{taxonomy}.phpファイルはアーカイブテンプレートであり、カスタムテンプレートの良い名前ではありません。そのため、カスタムテンプレートを使用したい場合は、ファイルにtemplate-cities.phpなどの名前を付けてファイルをページに呼び出します。

それ以外の場合は、単純なtaxonomy-{taxonomy}.phpアーカイブテンプレートを作成し、あなたの場合はtaxonomy-city.phpを次のようなコードで作成します。

<?php get_header(); ?>
<div id="page_content">
    <div class="page-wrapper">
        <div id="page_content_wrapper">
            <?php if (have_posts()) : ?>
                <div id="careers_table">
                    <?php while (have_posts()) : the_post(); ?>
                        <p class="content_text"><?php the_title(); ?></p>
                    <?php endwhile; ?>
                    <?php // pagination code here ?>
                </div>
            <?php else : ?>
                <div class="post">
                    <h3><?php _e('No City Found', 'cmeasytheme'); ?></h3>
                </div>
            <?php endif; ?>
        </div> <!-- .page_content_wrapper -->
        <div style="clear:both;"></div>
    </div> <!-- .page-wrapper -->
</div> <!-- .page_content -->
<?php get_footer(); ?>

そしてこのようにして、いかなるページも作成したりページテンプレートを呼び出したりする必要はありません。

提案

提案はWordPressに関連していませんが、良い習慣に関連していますが:

  • アンダースコア(_)ではなく、ハイフンで区切った( - )クラスに名前を付けてみてください。したがって、page_content_wrapperのようなクラスはpage-content-wrapperになります。
  • インラインスタイルを避け、代わりにクラスを作成してください。そのため、div <div style="clear:both;"></div>をクリアすることは<div class="clearfix"></div>のようなものになり得ます、そしてあなたはあなたの外部CSSファイルに.clearfix{clear:both}を置くことができます。
  • 重要なコメントを使って、閉じているdivなどの痕跡を残すことができます。
2
Mayeenul Islam