web-dev-qa-db-ja.com

カスタム投稿タイプが間違ったカテゴリとタグを取得している

わかりました私のブログにはvideoというカスタム投稿タイプがあります。ここでは動画のみを投稿しています。下のキャップがあります

enter image description here

右側にカスタム投稿タイプの最新の投稿、左側に動画、その下に日付、時刻、カテゴリ、タグが表示されます。しかし、問題は、タグ、カテゴリ、および日付が誤っていることです。どのように修正しますか?

以下はそのテンプレートページのコードです。

<?php
/*
Template Name: Single Videos
*/
?>
<?php get_header() ?>

<div id="wrapper">

<div id="container">

<div id="contentfull">



    <?php the_post() ?>

        <div class="entry-wide">
            <center><h2 class="page-title2"><?php the_title() ?></h2>     </center>

            <div class="entry-videoo">
 <?php the_content() ?>



 <?php wp_link_pages('before=<div class="page-link">' . __( 'Pages:', 'wpbx' ) . '&after=</div>') ?>


            </div>

 <div id="videosidebar">

 <?php
 $queryObject = new WP_Query( 'post_type=videos&posts_per_page=20&orderby=Rand' );
 // The Loop!
 if ($queryObject->have_posts()) {
?>

<?php
while ($queryObject->have_posts()) {
    $queryObject->the_post();

    ?>

 <table width="100%" border="0" cellspacing="0" cellpadding="0">

 <tbody>

 <tr>

 <td valign="top" width="1%">
 <div id="videoimg"><a href="<?php the_permalink(); ?>" title="<?php printf(__( 'Read %s', 'wpbx' ), wp_specialchars(get_the_title(), 1)) ?>">
                    <?php the_post_thumbnail('video-post'); ?>
                    </a></div>
 </td>

 <td valign="top" width="90%">
   <a href="<?php the_permalink(); ?>"><?php the_title(); ?></a>
 </td>

 </tr>


 </table>
 <?php
 }
 ?>
 <?php
 }
 ?>
 </div>

 <div class="entry-info">

 <div class="entry-meta-top">
                    <span class="entry-date"><font color="#e60288"><b><?php the_time(__('F jS, Y', 'kubrick')) ?></b></font></span>
                    <span class="entry-meta-sep">|</span>
                    <span class="entry-cat">Published in: <?php the_category(', '); ?> </span>


 <div id="sharing">
 <span class='st_facebook_hcount' st_title='<?php the_title(); ?>' st_url='<?php the_permalink(); ?>' displayText='share'></span><span class='st_Twitter_hcount' st_title='<?php the_title(); ?>' st_url='<?php the_permalink(); ?>' displayText='share'></span><span class='st_plusone_hcount' st_title='<?php the_title(); ?>' st_url='<?php the_permalink(); ?>' displayText='share'></span></div>
            </div>

 <br>
 <?php the_tags( __( '<span class="tag-links"><strong>More On:</strong> ', 'wpbx' ), ", ", "</span>\n" ) ?>


 <div class="entry-content">
                    <?php the_excerpt(); ?>
                </div>


 </div>

 <div class="entry-commm">

 <?php comments_template(); ?></div>


        </div><!-- entry -->





</div><!-- #contentfull -->
</div><!-- #container -->
</div><!-- #wrapper -->

 <?php get_footer() ?>
1

問題はあなたがどのように横にビデオを表示しているかにあります。どこかであなたはそのリストを作成するためにいくつかの投稿をループしています。スクリーンショットのそのリストの最後の投稿がインタビューと1回の間の時間であることに注目してください。に関連している。

なんでこんなことが起こっているの?

WordPressは、表示されている投稿(オブジェクト)であることが想定されているグローバル変数$postを格納します。これは、WordPress関数がその投稿に関連するカテゴリやタグなどを表示するために使用するものです。

この場合、サイドバーリストを表示するときにグローバル$postが変更されました。おそらく、 WP_Query または(さらに悪い)query_postsを使ったからです。 )または使用したことがある(推奨) get_posts ループ、現在の投稿がグローバルであることを宣言しました(global $postを宣言するかthe_post()メソッドを使う)。

そのため、ループを通過するにつれて、最後の変数に到達するまで、グローバルな$post変数をオーバーライドしています。その後、その投稿に留まります。これが、あなたがその投稿のカテゴリとタグを見ている理由です。

修正方法.

それはあなたがどのようにループを作ったかによって異なります。 wp_reset_postdataオブジェクトを使用した場合は、 WP_Query を使用できます。または、get_postsを使用したことがある場合は、投稿をグローバルとして宣言せずに、そのIDを関数に渡してください。あるいは、元のglobal $post(つまりメインの投稿)を一時変数に格納し、ループの後でリセットすることもできます。 その例をここで見てください

それが役立つことを願っています!

1
Stephen Harris

スティーブンのおかげで、私はwp_reset_postdataを入力する正しい場所を見つけました

<?php
}
?>
<?php
}
?>

そしてここがあなたがコードを追加するところです

<?php
}
?>
<?php wp_reset_postdata()
}
?>
0