Подсчет количества опубликованных сообщений по типу


У меня есть этот код, но он показывает общее количество сообщений, опубликованных по типу сообщения "код".

<?php
$count_posts = wp_count_posts('code')->publish;
echo $count_posts;
?>

У меня есть 2 типа сообщений: "код" и "магазин".
Код типа сообщения - "дочерний" для типа сообщения "магазин".
Поэтому мне нужно показать количество записей для "дочернего" типа записи "код" для тех, кто прикреплен к "парентному" типу записи "магазин".

ОБНОВЛЕНИЕ - РЕШЕНИЕ (если другие сталкиваются с такой же проблемой):

<?php
                            $result = $wpdb->get_results(
                                $wpdb->prepare(
                                    "SELECT COUNT(*) AS code_num FROM {$wpdb->prefix}postmeta AS postmeta LEFT JOIN {$wpdb->prefix}postmeta AS postmeta1 ON postmeta.post_id = postmeta1.post_id WHERE postmeta1.meta_key = 'code_expire' AND postmeta1.meta_value > %d AND postmeta.meta_key = 'code_shop_id' AND postmeta.meta_value = %s",
                                    current_time('timestamp'),
                                    $post->ID
                                )
                            );
                            $result = array_shift( $result );
                            echo '
                                <li class="list-group-item">
                                    <span class="badge">'.$result->code_num.'</span>
                                    <a href="'.esc_url( get_permalink( $post->ID ) ).'"> '.$post->post_title.' </a>
                                </li>';
    ?>

Большое спасибо Ахмеду!

Author: Kasper, 2016-09-19

2 answers

Если вы предпочитаете прямые запросы $wpdb, вы можете использовать что-то вроде этого:

global $wpdb;   
$count = $wpdb->get_var( "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_type = 'code' and post_status = 'publish'" );
echo $count;

В приведенном выше sql-запросе измените post_type на все, что вам нравится. Это вернет количество опубликованных сообщений только для определенного типа сообщений.

Если вы хотите запросить количество записей из нескольких типов записей, выполните этот запрос:

global $wpdb;   
$count = $wpdb->get_var( "SELECT COUNT(ID) FROM {$wpdb->posts} WHERE post_type IN ( 'code', 'shop', 'post', 'etc' ) and post_status = 'publish'" );
echo $count;

Надеюсь, это поможет.

 1
Author: Ahmed Fouad, 2016-09-19 22:25:27
$count = 0; 
$loop = new WP_Query( array('post_type' => 'code') );

while ( $loop->have_posts() ) : $loop->the_post();
  $count = $count + 1;
endwhile;

echo $count;
 0
Author: RyanCameron.Me, 2016-09-19 22:09:19