the_date()が機能しない


20

私はwordpress 3.2を使用しており、次のようなクエリポストを行いました。

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>

次に、このようにクエリしたこの投稿の日付をエコーアウトしようとします。

<?php echo the_date(); ?>

投稿のタイトル、抜粋、パーマリンクが表示されますが、日付は表示されません。問題は何だと思いますか。とても恥ずかしいことだと思います。

ビデオページのテンプレートファイルのコードは次のとおりです。

    <?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
    <h2>Recent Video</h2>
    <h3 class="date"><?php echo the_date(); ?></h3>
    <p><strong><?php echo the_title(); ?></strong><?php echo the_excerpt(); ?></p>
    <p><a href="<?php echo the_permalink(); ?>" class="more2">Watch Now</a></p>

ここで、クエリをループに入れようとします。

<?php query_posts("posts_per_page=1post=type&page=post_parent=10");?>
<?php if ( have_posts() ) : while ( have_posts() ) : the_post(); ?>
<h2>Recent Video</h2>
<h3 class="date"><?php echo the_date(); ?></h3>
<p><strong><?php echo the_title(); ?></strong><?php echo the_excerpt(); ?></p>
<p><a href="<?php echo the_permalink(); ?>" class="more2">Watch Now</a></p>
<?php endwhile; else: ?>
<p><?php _e('Sorry, no posts matched your criteria.'); ?></p>
<?php endif; ?>

the_date()は機能しませんでしたが、the_title()およびその他の関数は機能しました。ちなみに、これはクエリをthe_post()に変更しましたが、これは私が望んでいるものではありません。ループの上で行ったように、最新のビデオを照会したい。

ちなみに、私はページの前半で_date関数を使用し、それが機能しました。それが問題でしょうか?私が問題を抱えていたコードの前にあります。

<div id="col75" class="firstcol">
    <iframe id="video" src="http://www.youtube.com/embed/videoseries?list=<?php print get_post_meta($post->ID,"playlist_id", true); ?>" width='560' height='350' frameborder="0"></iframe>
    <div id="col25">
        <h2><?php echo get_post_meta($post->ID,"speaker", true); ?></h2>
        <h3 class="date"><?php echo the_date(); ?></h3>

回答:


51

「the_date」の使用に関するこの特別な注意を参照してください

特記事項:同じ日に公開されたページに複数の投稿がある場合、the_date()は最初の投稿(つまりthe_date()の最初のインスタンス)の日付のみを表示します。同じ日に公開された投稿の日付を繰り返すには、日付固有のフォーマット文字列でテンプレートタグthe_time()またはget_the_date()(3.0以降)を使用する必要があります。管理インターフェイスで設定された日付を追加するために使用します。

  1. あなたはquery_postsグローバルを台無しにするものを使用しています
  2. すでにブラウザに印刷されている関数をエコーし​​ています

    • 実際には、すべてのテンプレートタグに対してこれを実行しています。
    • 変更echo the_date();先:echo get_the_date('F j, Y');
    • 既にブラウザに印刷されているテンプレートタグからエコーを削除するか、値を返す代替関数を使用します。
  3. 新しい使用WP_Queryまたはget_postsの代わりにquery_posts

  4. コーデックスをお読みください。これらすべての機能の使用方法を説明し、非常に役立ちます:)


1
get_the_date()は私の問題を修正しましたが、今ではsidebar.php get_the_date()が壊れています。
ザクダイアー

1
別の犠牲者query_posts
-Chris_O

うまくいきましたが、エコータグを使用する必要がありました。それが、sidebar.phpで機能しなかった理由です。
ザクダイアー

17

the_date()同じ日付が前に印刷されなかった場合にのみ、日付を印刷します。
いいえ、他の同様の機能とは一致しません。しかし、それがWordPressの祖先b2 / cafelogでの動作であり、下位互換性は常に論理に勝ります... :)

常に日付を印刷するには get_the_date()

<?php echo get_the_date(); ?>

または

<?php echo mysql2date( get_option( 'date_format' ), $post->post_date); ?>

NOOOOOOOOOOOOOOOOOOOOOO。サイドバーのget_the_dateが壊れています。そこで何が起きますか?
ザクダイアー

1
Cris_Oの回答を参照してください。使用しないquery_posts()ください。:)
fuxia

あなたのグローバルを壊しているquery_posts使用しています。以下の私の答えをご覧ください。
Chris_O

0

私はそれがwhile( have_posts() )条件内で実行されることを意図していると思う:

while ( have_posts() ) : the_post();
    echo '<li>';
    the_date();
    echo '</li>';
endwhile;

投稿の日付を伝えるにはどうすればよいですか?私がやりたいことはそれだけですか?私は1つの投稿だけを照会しました。
ザクダイアー

0

特定の機能を動作させるには、ループを初期化する必要があります。これらの関数はすべて、コーデックスページに、ループ外では適切に機能しないことがリストされています。


いいえ、それはうまくいきません。私は投稿で行ったことのコードを投稿しました。
ザクダイアー

-1
// This won't show date in all cases
the_date( 'F d, Y' );

// This will show date in all cases
the_time( 'F d, Y' );
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.