フロントページに画像のない投稿を非表示にしたいので、それらの投稿のIDの配列を取得する必要があります。
ホームページ上の投稿をIDで非表示にする方法はわかっていますが、画像付きの投稿のみを表示する必要があります。これは私がすでに持っているものです:
function exclude_post($query) {
if ($query->is_home) {
$query->set('post__not_in', array(1,2) );
}
return $query;
}
add_filter('pre_get_posts','exclude_post');
サムネイルのない投稿IDは不要です。サムネイルを持っているものだけを取得するにはメタクエリを使用してください。
メタクエリを追加
function get_only_posts_with_images( $query ) {
if ( $query->is_home() && $query->is_main_query() ) {
$query->set( 'meta_query', array( array( 'key' => '_thumbnail_id' ) ) );
}
}
add_action( 'pre_get_posts', 'get_only_posts_with_images' );
またはカスタムクエリを使用してください。
$query = "
SELECT posts.*
FROM $wpdb->posts AS posts
INNER JOIN $wpdb->posts AS attachment
ON attachment.`post_parent`=posts.`ID`
AND attachment.`post_type`='attachment'
WHERE posts.`post_type`='post'
";
$posts_with_images = $wpdb->get_results( $query, OBJECT );