サイト内検索
Cocoonフォーラム
書き込みの前に以下の3点をご確認ください。
何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。
不具合・カスタマイズ対象ページのURL:
相談内容:
不具合の発生手順:
解決のために試したこと:
※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。
環境情報の取得方法はこちら。
→ https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
→ https://wp-cocoon.com/theme-trouble/
フォーラム利用ガイドリンク
- フォーラムガイドライン
- よくある質問と答え(FAQ)
- サポート対象外のケース
- 原因不明の不具合用トラブルシューティング
- トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw)
- 真っ白画面でのエラーメッセージの確認方法
- ブラウザ環境チェックツール
- Cocoonカスタマイズ依頼
フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。
トピックスターター 2025年10月29日 19:48
平素よりお世話になっております。
「アーカイブに出力しない」場合の、仕様の確認をさせてください。
(過去にも何回かお問い合わせ等あり、少しこんがらがってきたり、前のことも忘れてしまいました)
①
カテゴリー「Archive page TEST」には、4件の投稿があります。
②
この内の1件の投稿には、「アーカイブに出力しない」にチェックがあります。
③
その場合のカテゴリーアーカイブページですが、以下のような表示です。
インデックスに表示される投稿は3件で、これは意図したものだと思います。
ただ、カテゴリーウィジェットの件数は、4件になっています。
これが仕様がどうか、確認させてください。
ばっと見では、インデックスリストとカテゴリーウィジェットの件数に、差異があり、違和感がありました。
(昨日のお問い合わせ中に、気づいて少し違和感がありました)
確かにこのカテゴリーには、4件投稿があると言えばありますし。
(フロント側にそれが出ていると、隠している意味が、という気もしますし、get_termsで介入できそうな気もしますし)
(フロント側にそれが出ていると、隠している意味が、という気もしますし、get_termsで介入できそうな気もしますし)
その辺りの、確認をさせていただければと思います。
トピックスターター 2025年10月29日 21:16
昨日のお問い合わせで、少し違和感があったことと。
過去の経緯等忘れてしまいましたので、まずは仕様確認をという感じでした。
「アーカイブ」ウィジェットの投稿数も不一致になります。
言われてみれば。
とりあえず、カテゴリーの方は考えていましたが、アーカイブウィジェットの方はすっぽり抜けていました。
ChatGPTに修正をお願いすると、以下のような感じにはなりました。
(除外カテゴリー考慮に入れていません。テストもほぼしていません。子テーマに追加しただけですね)
add_filter('widget_display_callback', 'set_widget_exclude_filter', 10, 3);
// 除外投稿リスト対象取得用
$excluded_posts_cache = null;
function set_widget_exclude_filter($instance, $widget, $args) {
// id_base存在確認
if (!isset($widget->id_base)) {
return $instance;
}
// カテゴリーウィジェット
if ($widget->id_base === 'categories') {
add_filter('get_terms', 'filter_cat_counts', 10, 3);
}
// アーカイブウィジェット
if ($widget->id_base === 'archives') {
add_filter('getarchives_where', 'filter_archive_counts', 10, 2);
}
return $instance;
}
// 除外する投稿を取得
function get_excluded_posts() {
global $excluded_posts_cache;
if ($excluded_posts_cache === null) {
// 除外対象投稿IDを取得
$excluded_posts_cache = get_posts(array(
'post_type' => 'post',
'posts_per_page' => -1,
'fields' => 'ids',
'meta_query' => array(
array(
'key' => 'the_page_no_archive',
'value' => 1,
'type' => 'NUMERIC',
),
),
));
}
// 2回目以降は前回のものを使用
return $excluded_posts_cache;
}
// カテゴリーウィジェット
function filter_cat_counts($terms, $taxonomies, $args) {
// カテゴリーのみ対象
if (!in_array('category', (array)$taxonomies, true)) {
return $terms;
}
$excluded_posts = get_excluded_posts();
foreach ($terms as $key => $term) {
$query = new WP_Query(array(
'post_type' => 'post',
'posts_per_page' => 1, // found_postsだけ使用
'fields' => 'ids',
'tax_query' => array(
array(
'taxonomy' => 'category',
'field' => 'term_id',
'terms' => $term->term_id,
),
),
'post__not_in' => $excluded_posts,
));
// 再計算した投稿数
$terms[$key]->count = $query->found_posts;
}
// フィルター解除
remove_filter('get_terms', 'filter_cat_counts', 10);
return $terms;
}
// アーカイブウィジェット
function filter_archive_counts($where, $r) {
global $wpdb;
$excluded_posts = get_excluded_posts();
if ($excluded_posts) {
$excluded_ids = implode(',', array_map('absint', $excluded_posts));
// WHERE に除外投稿IDを追加
$where .= " AND {$wpdb->posts}.ID NOT IN ($excluded_ids)";
}
// フィルター解除
remove_filter('getarchives_where', 'filter_archive_counts', 10);
return $where;
}
今日は、フォーラムに顔を出せるのは、これまでです。
また後日・・・。(明日は通院ですので、更にその後日に)
この投稿は1時間前 3回ずつmk2に変更されました
問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。
また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。
(CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。
フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。
最近の書き込みはこちら。
詳細なカスタマイズ依頼をするならこちら。






