抜粋のある投稿のみを返すために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;
}
post_excerpt
列は文字列であり、 "IS NOT NULL"を使用してフィルタすることはできません。空の文字列をクエリするには、!=
演算子を使用できます。
function posts_where_excerpt_not_empty( $where ) {
$where .= " AND post_excerpt != '' ";
return $where;
}
また、get_postsはデフォルトでフィルタを抑制するため、suppress filtersを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!';
} ?>
。
これは、チェックから取得したコンテンツを表示するページのループ内にあるはずです。