web-dev-qa-db-ja.com

the_date()が機能しない

私はワードプレス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>
19
zachdyer

これを参照してください `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. コーデックスを読んでください。それはこれらすべての機能の使い方を教えてくれるし、とても役に立ちます:)

49
Chris_O

the_date() 同じ日付が前には印刷されないの場合にのみ日付を印刷します。
いいえ、それは他の同様の機能と一致しません。しかし、それは WordPressの祖先 b2/cafelog でどのように機能したか、そして後方互換性は常に論理を切り抜くことを意味します…:)

日付を印刷するには常にget_the_date()を使います。

<?php echo get_the_date(); ?>

または

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

これはwhile( have_posts() )条件内で実行されることを意味していると思います。

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

特定の機能が機能するには、ループを初期化する必要があります。これらの関数はすべて、それらのコーデックスページに、ループの外側では正しく機能しないことを示しています。

0
mor7ifer