我试图使用get\\u posts只返回包含摘录的帖子。进行了大量搜索,并一直尝试在查询中使用“posts\\u 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;
}
最合适的回答,由SO网友:Chris_O 整理而成
这个post_excerpt
列是字符串,不能使用“is not NULL”进行筛选。要查询空字符串,可以使用!=
操作人员
function posts_where_excerpt_not_empty( $where ) {
$where .= " AND post_excerpt != \'\' ";
return $where;
}
另外,默认情况下,get\\u posts会抑制过滤器,因此您需要在抑制过滤器设置为false的情况下调用它,或者使用其他查询方法。
$posts = get_posts( array( \'suppress_filters\' => FALSE ) );
SO网友:Sagive
我可能弄错了,但“检查是否为空”条件不会起作用吗?
<?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!\';
} ?>
我认为这应该在您要显示从检查中返回的内容的页面的循环中。。