the_date () ไม่ทำงาน


20

ฉันใช้เวิร์ดเพรส 3.2 และฉันโพสต์ข้อความค้นหาเช่นนี้:

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

จากนั้นฉันก็พยายามที่จะสะท้อนวันที่โพสต์นี้ที่ฉันถามเช่นนี้

<?php echo the_date(); ?>

มันทำให้ฉันชื่อของโพสต์และข้อความที่ตัดตอนมาและ Permalink แต่ไม่มีวันที่ คุณคิดว่าปัญหาคืออะไร ฉันแน่ใจว่ามันเป็นสิ่งที่ค่อนข้างน่าอาย

นี่คือรหัสในไฟล์เทมเพลตของฉันสำหรับหน้าวิดีโอ:

    <?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 () ซึ่งไม่ใช่สิ่งที่ฉันต้องการ ฉันต้องการสอบถามวิดีโอล่าสุดอย่างที่ฉันทำเหนือลูป

โดยวิธีที่ฉันใช้ the_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'

หมายเหตุพิเศษ: เมื่อมีหลายโพสต์ในหน้าที่เผยแพร่ภายใต้ SAME DAY, 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. อ่าน Codex มันบอกวิธีใช้ฟังก์ชั่นเหล่านี้ทั้งหมดและมีประโยชน์มาก :)


1
get_the_date () แก้ไขปัญหาของฉัน แต่ตอนนี้ sidebar.php ของฉัน get_the_date () เสีย
zachdyer

1
เหยื่ออีกรายของquery_posts
Chris_O

โอเคมันใช้งานได้แล้ว แต่ฉันต้องใช้แท็ก echo นั่นคือเหตุผลที่มันไม่ทำงานใน sidebar ของฉัน php
zachdyer

17

the_date()พิมพ์วันที่เฉพาะในกรณีที่ไม่ได้พิมพ์วันที่เดียวกันก่อนหน้านี้
ไม่นั่นไม่สอดคล้องกับฟังก์ชั่นอื่นที่คล้ายคลึงกัน แต่นั่นเป็นวิธีการทำงานในบรรพบุรุษของ WordPress b2 / cafelogและความเข้ากันได้ย้อนหลังเสมอสำคัญกว่าตรรกะ… :)

หากต้องการพิมพ์วันที่จะใช้เสมอ get_the_date()

<?php echo get_the_date(); ?>

หรือ

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

NOOOOOOOOOOOOOOOOOOOO ตอนนี้แถบด้านข้างของฉัน get_the_date หัก เกิดอะไรขึ้นที่นั่น?
zachdyer

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;

ฉันจะพูดวันที่โพสต์ได้อย่างไร นั่นคือทั้งหมดที่ฉันต้องการจะทำอย่างไร ฉันสอบถามเพียงหนึ่งโพสต์
zachdyer

0

คุณต้องเริ่มต้นการวนซ้ำเพื่อให้ฟังก์ชันบางอย่างทำงานได้ รายการฟังก์ชั่นเหล่านี้ทั้งหมดในหน้า codex ของพวกเขาว่าพวกเขาจะไม่ทำงานอย่างถูกต้องนอกวง


ไม่นั่นไม่ทำงานฉันโพสต์รหัสของสิ่งที่ฉันทำในโพสต์
zachdyer

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.