Извлекайте только сообщения, в которых была заполнена выдержка из сообщения
Я пытаюсь использовать get_posts, чтобы возвращать только сообщения, в которых есть выдержка. Провел много поисков и пытался использовать фильтр "posts_where" в запросе, но мой SQL отсутствует. Это то, что я использую, что, по моему мнению, теоретически должно работать, но на самом деле я понятия не имею о sql и не могу понять, как распечатать строку sql для этого запроса для отладки...
$args = array(
'post_type' => 'testimonial',
'numberposts' => 1,
'orderby' => 'rand',
);
add_filter( 'posts_where' , 'posts_where_excerpt_not_empty' );
$post = get_posts($args);
remove_filter( 'posts_where' , 'posts_where_excerpt_not_empty' );
[...]
function posts_where_excerpt_not_empty( $where ) {
$where .= " post_excerpt NOT NULL";
return $where;
}
2 answers
Столбец post_excerpt
является строкой и не может быть отфильтрован с помощью "НЕ РАВНО НУЛЮ". Для запроса пустой строки вы можете использовать оператор !=
.
function posts_where_excerpt_not_empty( $where ) {
$where .= " AND post_excerpt != '' ";
return $where;
}
Также get_posts по умолчанию подавляет фильтры, поэтому вам нужно будет вызвать его с помощью подавления фильтров, установленных в значение false, или использовать другой метод запроса.
$posts = get_posts( array( 'suppress_filters' => FALSE ) );
Возможно, я ошибаюсь, но не сработает ли условие "проверить, пусто ли"?
<?php
query_posts(array(
'post_type' => 'testimonial',
'showposts' => 1,
'orderby' => 'rand'
) );
$checExcerpt = get_the_excerpt();
if !($checExcerpt = '') {
// Put the echo commands here
} else {
echo 'Sorry You forgot to enter Descriptions.. search engine love does!';
} ?>
.
Я думаю, что это должно быть внутри цикла на странице, на которой вы хотите отобразить содержимое, полученное из проверки..