- このトピックには9件の返信、2人の参加者があり、最後に
TarCoon☆CarToonにより5日、 3時間前に更新されました。
-
投稿者投稿
-
2025年10月15日 12:23 PM #146598
【お使いの Snow Monkey のバージョン】バージョン: 29.1.6
【お使いの Snow Monkey Blocks のバージョン】バージョン 24.1.4
【お使いの Snow Monkey Editor のバージョン】バージョン 11.0.3
【お使いのブラウザ】Safari, Chrome
【当該サイトのURL】https://tarcoon.me/
ブログの投稿ページには全ての記事が一覧表示されるのですが、投稿ページのカテゴリをフィルタして、特定のカテゴリの投稿ページを記事一覧から除外したり、逆に特定のカテゴリの投稿ページのみを記事一覧に含めるためのカスタマイズ方法を教えて欲しいです。
✔︎ やりたいこと
下記画像で設定している投稿ページ(https://tarcoon.me/jp/media/blog/)で、一部の親カテゴリから下層のカテゴリ全てを非表示にしたい。

1.通常では全ての記事が表示されてしまいます。

2.秘密の記事を非表示にしたいです。

✔︎ 理由
会員限定の記事を記事一覧には表示させたくない。記事の存在すら知られたくない。よろしくお願いいたします。
♥ 0Who liked: No user2025年10月15日 12:52 PM #146599この「極秘」の記事は、どういう方法で会員限定にされていますか?
この「極秘」と同じ方法で会員限定にしている記事を全て非表示にしたいということであれば、単純にカテゴリーで絞るより良い方法があるかもなと思いまして…。あと、現状、僕のパソコンで https://tarcoon.me/jp/media/blog/ を開いても表示されていないです。
♥ 0Who liked: No user2025年10月15日 1:54 PM #146600ありがとうございます。
▶︎この「極秘」の記事は、どういう方法で会員限定にされていますか?
→ 現在は下書きのままにしているだけです。
▶︎こあと、現状、僕のパソコンで https://tarcoon.me/jp/media/blog/ を開いても表示されていないです。
→現在は下書きにしているのですが、このリンクのページは表示されますか?
*本来は「このように非会員には表示されない状態にしたい」という意図を画像で共有したかったのですが、かえってお気遣いをおかけしてしまい、申し訳ありません。以上のとおり、現時点で会員限定設定の記事はありません。
記事内では「Snow Monkey Member Post」や「Snow Monkey Editor」の表示設定を使い、ブロック単位で会員限定表示にしていますが、記事全体を非会員から見えないようにしたいと考えています。♥ 0Who liked: No user2025年10月15日 11:01 PM #146603なるほどです。一応、ページ自体を「Snow Monkey Member Post」でメンバー限定にしたとして、それを「非メンバー(つまりサイトにログインしていない人)+ 一覧画面」のときは表示しないようにするのは下記のコードでできそうです。
add_action( 'pre_get_posts', function( $query ) { // メンバーのときは絞り込まない if ( ! \Snow_Monkey\Plugin\MemberPost\App\Helper::is_restricted_member() ) { return; } // 管理画面のとき、あるいはメインクエリーじゃないときは絞り込まない if ( is_admin() || ! $query->is_main_query() ) { return; } // ホーム、アーカイブページ、検索結果ページ、以外のときは処理しない if ( ! is_home() && ! is_archive() && ! is_search() && ! ( defined( 'REST_REQUEST' ) && REST_REQUEST ) ) { return; } $meta_query = (array) $query->get( 'meta_query' ); $meta_query[] = [ 'key' => \Snow_Monkey\Plugin\MemberPost\App\Config::get( 'restriction-key' ), 'compare' => 'NOT EXISTS', ]; $query->set( 'meta_query', $meta_query ); } );2025年10月17日 1:33 AM #146605ありがとうございます。
ひとまず、一覧画面に表示されなくなりました。ただ、管理画面(サイトにログインしている人)でも非表示になってしまいました。
♥ 0Who liked: No user2025年10月17日 1:51 AM #1466072025年10月20日 12:54 AM #146627キタジマさんありがとうございます。
様子を見たところ、
ログアウト状態で、ブログの一個前の古い投稿や、次の投稿にメンバー限定の記事が表示されてしまいます。
また関連記事にも表示されてしまいます。
これを見えなくするのは難しいのでしょうか?
♥ 0Who liked: No user2025年10月20日 10:23 AM #146628前後ナビについては下記のコードで非表示にできそうでした。
ただ、SQL を直接書き換えるので、個人的にはあんまり積極的には使いたくないかなぁという印象です。function my_exclude_meta_from_adjacent_where( $where ) { global $wpdb; // メンバーのときは絞り込まない if ( ! \Snow_Monkey\Plugin\MemberPost\App\Helper::is_restricted_member() ) { return $where; } $meta_key = \Snow_Monkey\Plugin\MemberPost\App\Config::get( 'restriction-key' ); // p は WP コアの get_adjacent_post() 内で使われる posts テーブルのエイリアス $where .= $wpdb->prepare( " AND NOT EXISTS ( SELECT 1 FROM {$wpdb->postmeta} m WHERE m.post_id = p.ID AND m.meta_key = %s )", $meta_key ); return $where; } add_filter( 'get_previous_post_where', 'my_exclude_meta_from_adjacent_where' ); add_filter( 'get_next_post_where', 'my_exclude_meta_from_adjacent_where' );関連記事は WordPress ループを使っているので、先日のコードの適用条件を緩くすれば良さそうです。ただ、管理画面以外のときは全部のクエリーに適用されるので、動作が重くなる可能性があること、意図しない部分にも適用されてしまう可能性があること、に注意する必要がありそうです。
add_action( 'pre_get_posts', function( $query ) { // メンバーのときは絞り込まない if ( ! \Snow_Monkey\Plugin\MemberPost\App\Helper::is_restricted_member() ) { return; } // 管理画面のときは絞り込まない if ( is_admin() ) { return; } $meta_query = (array) $query->get( 'meta_query' ); $meta_query[] = [ 'key' => \Snow_Monkey\Plugin\MemberPost\App\Config::get( 'restriction-key' ), 'compare' => 'NOT EXISTS', ]; $query->set( 'meta_query', $meta_query ); } );2025年10月20日 2:33 PM #1466302025年10月31日 3:47 PM #146714 -
投稿者投稿
- トピック「WordPressのブログ一覧ページ(投稿ページ)で特定カテゴリを除外、限定などフィルタして表示するカスタマイズ」には新しい返信をつけることはできません。
