#php #wordpress
#php #wordpress
Вопрос:
Я работаю над веб-страницей WordPress, на которой я хочу показать нулевой пост для определенной категории. Ниже приведен код для этого:
<?PHP
$temp_args = [
'post_status' => 'publish',
'orderby' => array(
'feat_yes' => 'ASC',
'post_type' => 'ASC',
'date' => 'DESC'),
'posts_per_page' => $data->{"no_articles_".ICL_LANGUAGE_CODE}, // Line A
'tax_query' => [
[
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => $cat_today,
],
],
];
echo '<pre>'; print_r($temp_args); echo '</pre>';
$q = new WP_Query($temp_args);
echo "Have posts: ";
echo '<pre>'; print_r($q->have_posts()); echo '</pre>';
if ($q->have_posts()) {
while ($q->have_posts()) {
$q->the_post();
$post_type = strtolower(get_post_type());
switch ($post_type) {
}
}
wp_reset_postdata();
}
?>
Я добавил строку #A, чтобы контролировать количество сообщений для определенной категории. Когда значение 'posts_per_page' => 0
, тогда отображается весь список сообщений для этой конкретной категории, и я не уверен, почему.
Формулировка проблемы:
Мне интересно, какие изменения я должен внести в приведенный выше php-код, когда 'posts_per_page' => 0
тогда он должен показывать нулевой пост.
Комментарии:
1. Если вы не хотите показывать какие-либо сообщения для категории, зачем вы ищете сообщения для этой категории? Просто не выполняйте поиск. Завершите поиск в блоке if.
2. @stevecomrie можете ли вы сообщить мне в ответе, что я должен сделать?
3. Почему бы не использовать
'category__not_in'
в вашем исходном запросе?4. Где вы хотите, чтобы я использовал
'category__not_in'
?
Ответ №1:
Это давняя ошибка в ядре WordPress. Смотрите тикет Trac #24142.
Вы можете просто убедиться, что оно больше 0 перед запуском кода, обернув все в оператор if:
<?PHP
if( $data->{"no_articles_".ICL_LANGUAGE_CODE} >= 1 ) {
$temp_args = [
'post_type' => array('current-channel', 'post', 'current-episodes'),
'post_status' => 'publish',
'orderby' => array(
'feat_yes' => 'ASC',
'post_type' => 'ASC',
'date' => 'DESC'),
'posts_per_page' => $data->{"no_articles_".ICL_LANGUAGE_CODE}, // Line A
'tax_query' => [
[
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => $cat_today,
],
],
];
echo '<pre>'; print_r($temp_args); echo '</pre>';
$q = new WP_Query($temp_args);
echo "Have posts: ";
echo '<pre>'; print_r($q->have_posts()); echo '</pre>';
if ($q->have_posts()) {
while ($q->have_posts()) {
$q->the_post();
$post_type = strtolower(get_post_type());
switch ($post_type) {
case 'current-episodes':
get_template_part('template-parts/content-search', 'video');
break;
case 'current-channel':
if (get_post_meta($post->ID, "current_portal_end_date_timestamp", true) > time()) {
echo "Hello World";
get_template_part('template-parts/content-search', 'channel');
}
break;
case 'post':
get_template_part('template-parts/content', 'search');
break;
}
}
wp_reset_postdata();
}
}
?>