WP: 特定のカテゴリーを除外

Quick Edit Pencil

WordPressのホームページ(トップページ)で出現記事の絞り込みを行いたい。

条件

特定のカテゴリを除外 かつ タグが登録されている記事

使用中のテーマのindex.phpの?php get_header(); ?の下に、以下のコードを挿入すればカテゴリの絞り込みは簡単にできる。

<?php if (is_home()) { query_posts("cat=-5"); } ?>

が、さらに絞り込み、タグが登録されている記事のみを表示させる方法が分からない。

恐らくタクソノミー引数を使えばできそうなのだが、どうも良く理解できない。

調べていると、使用中のテーマのfunctions.phpにフィルター処理(add_filter)することで、絞り込みをできるらしい。SQLなら分かるし、query_postsを呼ぶより早いらしい。

もうquery_postsは呼ばない:WordPress私的マニュアル

Plugin API/Filter Reference/posts where « WordPress Codex

上の二つのリンクを参考にして出来上がったのが下記で、上手く動いている。

add_action( 'after_setup_theme', 'mytheme_setup' );
function mytheme_setup() {
add_filter( 'posts_where', 'posts_where' );
}
function posts_where($where){
global $wp_query;
if ( $wp_query->is_home ) {
global $wpdb;
$where .= " AND NOT ID IN (SELECT object_id FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN (12) )";
$where .= " AND ID IN (SELECT object_id FROM {$wpdb->term_relationships} WHERE term_taxonomy_id IN (SELECT term_taxonomy_id FROM {$wpdb->term_taxonomy} WHERE taxonomy = 'post_tag' ) )";
}
remove_filter( 'posts_where', __FUNCTION__ );
return $where;
}

このブログの人気の投稿

書字方向 横書方向変換スクリプト 左書きから右書きへ(コピペ用途)

PowerShellのGetDetailsOf メソッドでプロパティの詳細情報のID番号と項目名を列挙します

PowerShellで複数ファイルのプロパティを取得する方法(準備編)

簡単 YouTube動画をダウンロード、音声のみ保存する方法 2019

DOMノードオブジェクトを文字列に変換する

AppleScript 改行 コード 置換

ヤバい!JAPANNEXT WQHD対応 27型ワイド液晶ディスプレイ「JN-IPS2716WQHD」を注文してみた!!!

VMWare Playerでホストとゲスト間でクリップボードが共有できない時の対処法