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番号と項目名を列挙します

Blender: 辺の長さを数値で指定するアドオン

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

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

決定版 Edgeでローカルファイルを開く パワーシェルスクリプト (ウインドウズでドロップレット)

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

カルチャーラジオ 科学と人間 薬と毒の歴史をひも解く 日本薬科大学教授…船山信次

Windows10でアプリケーションごとに輝度を設定、自動で変更する - AutoHotkey