การนับจำนวนโพสต์ (ประเภทโพสต์ที่กำหนดเอง) ปัญหาการค้นหา


11

ฉันพยายามนับจำนวนโพสต์ทั้งหมดของโพสต์ "งาน" ประเภทที่กำหนดเอง ข้อความค้นหาของฉันเพิ่งส่งกลับ "0" เมื่อฉันรู้ว่ามีโพสต์ ฉันไม่คิดว่ามันกำลังตรวจสอบว่าประเภทโพสต์มีการโพสต์ แต่ฉันไม่รู้เหตุผลว่าทำไม ... ความคิดใด ๆ

<?php $jobs = new WP_Query(array( 'post_type' => 'jobs' ));?>
<?php if ($jobs->have_posts()) { 

    $count_posts = wp_count_posts()->publish; 
    if ( $count_posts == "1" ) { 
        echo "<h2>There is currently one vacancy...</h2>"; }
    else { echo "<h2>There are currently  $count_posts vacancies...</h2>"; }

} else { ?>
<h2>There are currently no vacancies.</h2>
<?php } ?>

ในฐานะที่เป็นบันทึกย่อคุณลองนับ ($ jobs) หรือ print_r ($ jobs) เพียงเพื่อดูผลลัพธ์ต้นฉบับของแบบสอบถาม
redconservatory

ไม่ลองแล้วก็ไม่มีประโยชน์อะไรเลย
แดนลี

คำตอบ:


38

wp_count_postsฟังก์ชั่นมีพารามิเตอร์$typeสำหรับโพสต์ประเภทที่จะนับคุณควรใช้พารามิเตอร์นี้ถ้าคุณต้องการที่จะได้รับจำนวนของงาน

ชอบมาก:

$count_posts = wp_count_posts( 'jobs' )->publish;

นั่นทำงานได้!
Dan Lee

ฉันดีใจที่มันช่วย
Mamaduka

คุณต้องยอมรับคำตอบนี้โดยคลิกที่เครื่องหมายถูกใต้การนับคะแนนที่มุมซ้ายบนของคำตอบ
Chip Bennett

-1

แทนที่เหล่านี้ด้วย meta_key และ meta_value ของคุณ:

$meta_key = 'x';
$meta_value = '2';

$sql = "SELECT count(DISTINCT pm.post_id)
FROM $wpdb->postmeta pm
JOIN $wpdb->posts p ON (p.ID = pm.post_id)
WHERE pm.meta_key = '$meta_key'
AND pm.meta_value = '$meta_value'
AND p.post_type = 'post'
AND p.post_status = 'publish'
";

$count = $wpdb->get_var($sql);
echo "<p>Count is: $count</p>";

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