サイト内検索
Cocoonフォーラム
書き込みの前に以下の3点をご確認ください。
何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。
不具合・カスタマイズ対象ページのURL:
相談内容:
不具合の発生手順:
解決のために試したこと:
※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。
環境情報の取得方法はこちら。
→ https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
→ https://wp-cocoon.com/theme-trouble/
フォーラム利用ガイドリンク
- フォーラムガイドライン
- よくある質問と答え(FAQ)
- サポート対象外のケース
- 原因不明の不具合用トラブルシューティング
- トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw)
- 真っ白画面でのエラーメッセージの確認方法
- ブラウザ環境チェックツール
- Cocoonカスタマイズ依頼
フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。
Topic starter
2024年8月25日 00:03
お世話になります。
「cocoon設定→インデックス」で、特定のカテゴリをインデックスページで非表示(除外)としています。
しかし、この機能を使うとRSSでも表示されない事が分かりました。
https://wp-cocoon.com/do-not-output-posts-that-belong-to-archives/
もし、この機能を使いながらも、RSSで記事を表示させる方法をご存知の方がいれば、ご教授頂けると幸いです。
ちなみに、現在はカルーセルを代用していますが、RSS表示させたいと考えています。
何卒よろしくお願い致します。
※運営サイト→ https://serisoku.com
2024年8月25日 00:56
●確認
やりたい事が伝わりません。
[Cocoon設定]→[インデックス]→フロントページタイプ「 一覧(デフォルト)」とした。
この時、図示のように除外カテゴリー「今日の新聞一面」を除外設定した。
目的は「今日の新聞一面」の記事一覧と(カルーセルでなく)、
他カテゴリーの記事一覧(「今日の新聞一面」を除外)と、分けて表示したいと言う事でしょうか?
※過去と本日と言うくくりで一覧表示したい?
期待とする、レイアウトを図示して頂くと伝わり易いかと思います。
2024年8月25日 01:48
試してはいないのでコードだけ見て回答します。
RSSの時のカテゴリの除外は、functions.phpの251行目でメインクエリの前処理として行われているようです。
なのでここでif (!$query->is_feed) {}
の時だけ除外しないように処理を分岐させれば良いと思います。
子テーマのfunctions.phpにcustom_main_query_pre_get_posts()の中身を丸ごとコピペすると、子テーマの内容が優先して適用されるので処理をカスタマイズすることができます。
ただ以下のようにおっしゃっているので、やりたいことは本当に「インデックスに表示せず、しかしRSSには表示させたい」なのかな?とは思いました。
ちなみに、現在はカルーセルを代用していますが、RSS表示させたいと考えています。
RSSは通常、サイト内に表示するというよりも、サイトの読者に記事の投稿を通知するために使われることが多いです。
2024年8月25日 02:04
●回答
要件は不明なので、私が読みとった内容で回答します。
●設定
[Cocoon設定]→[インデックス]
→フロントページタイプ「一覧(デフォルト)」オン
→除外カテゴリー「今日の新聞一面」オン
●方法
functions.phpにコードを追加、新着記事ショートコードのパラメータから除外カテゴリーを削除。
ウィジェット「カスタムHTML」をインデックストップに配置。
[new_list cats=今日の新聞一面のカテゴリーID]を記述。
ウィジェット「カテゴリー」のメニュー「今日の新聞一面」を非表示とし除外。
結果、図のようなレイアウトで表示したい????
RSSは通常、サイト内に表示するというよりも、サイトの読者に記事の投稿を通知するために使われることが多いです。
言われている、RSSは読者に通知するのが目的です。
この為、RSSとカルーセル代用の話が繋がらず。
はるさんの言われる通り、RSSから除外される為、読者には「今日の新聞一面」も通知したいと言う事???
すみません、除外カテゴリーにする目的が分かりません。
わいひら reacted
2024年8月26日 17:57
上記ですが、なぜRSSなのか仕様が不明です。
何をしたいのか、回答願います。
●設定
[Cocoon設定]→[インデックス]
→フロントページタイプ「一覧(デフォルト)」
→カードタイプ「エントリーカード(デフォルト)」
除外カテゴリーには何もチェックを付けない。
→結果、インデックス一覧には、今日の新聞の一面も含まれる。
●仕様
投稿順とした場合、「今日の新聞見出し」は、常に一覧の最初に表示される。
投稿日が今日の場合、大見出しを「今日の新聞の見出し」とする。
投稿日が過去の日付の場合、大見出しを「過去の新聞の見出し」とする。
今日の投稿日が無い場合、大見出し「過去の新聞の見出し」のみとなる。
●補足
カテゴリー「今日の新聞の一面」を設ける必要がない。
→結果、RSSにも出力される。
●実現方法
functions.php(20行)でフックを用い、投稿日が今日なのか否か判定し、カードにCSSクラスを追加する。
style.css(14行)、疑似要素でタイトルを追加する。
2024年8月26日 23:24
特にRSSにこだわりがあるという訳ではないのですが、この新聞のヘッドラインについては「通常のニュース記事とは別」と言った感じで見せたいだけでした。
この用途であればRSSは向かないと思います。
RSSをサイトに埋め込むのは、他サイトの更新情報を自サイトに表示したい時とかですかね。
Cocoonの機能で任意の記事を表示させるのであれば以下のような選択肢があります。
ヘッダー下にお勧め記事カルーセルを表示する方法
→既に試しているよう
おすすめカードウィジェットの使い方
→画像が強調される感じ
意図した記事一覧を作成できる「ナビカード」ショートコードの使い方
→インデックスリストっぽい見た目。ヘッダーに配置するには向かないかも。
新着記事一覧を表示するショートコードの利用方法
→上の2つはメニューから表示する記事を指定する必要がありますが、[new_list ordered_posts=XXX]を使えばショートコードから直接記事を指定できます。
わいひら reacted
2024年8月27日 01:38
●ご参考
先述の通り、フロントページに固定ページを用います。
独自ショートコード(my_new_list)を用い、ordered_postsに今日の記事の投稿IDを自動設定し、new_listを呼び出します。
また、今日の投稿記事を読み飛ばすよう、offsetを自動設定し、new_listを呼び出します。
簡単にしか動作確認していません笑
add_shortcode('my_new_list', function($atts) { extract(shortcode_atts( array( 'count' => 5, 'today' => null, ), $atts )); $html = null; // 今日の日付設定 $yymmdd = explode('-', wp_date('Y-m-d')); $args = array( 'date_query' => array( array( 'year' => $yymmdd[0], 'month' => $yymmdd[1], 'day' => $yymmdd[2], ), ), ); $wp_query = new WP_Query($args); if ($today) { //今日の投稿の投稿IDを取得 if ($wp_query->have_posts()) { while ($wp_query->have_posts()) : $wp_query->the_post(); $ids[] = get_the_ID(); endwhile; $posts = implode(',', $ids); wp_reset_postdata(); // 今日の投稿一覧を全て表示 $html = do_shortcode('[new_list type=1 snippet=1 ordered_posts="' . $posts . '"]'); } } else { // 今日の投稿を件数取得 $o = $wp_query->found_posts; // 今日の投稿を除いた一覧をcount分表示 $html = do_shortcode('[new_list type=2 snippet=1 offset=' . $o . ' count=' . $count .']'); } return $html; });
わいひら reacted
2024年8月27日 17:45
@mitsu さん
Mitsuさんの設定で実現するには。
インデックスリストから、例としてカテゴリーID=169を除外。
カテゴリーID=169だけ新着記事として、別に全て表示。
●制約
インデックスからカテゴリー=169を除外する為、カテゴリー=169のアーカイブリストを表示すると、「NOT FOUND」となる。
●設定
[Cocoon設定]→[インデックス]
→フロントページタイプ「一覧(デフォルト)」
→除外カテゴリーを設定、例としてカテゴリーID=169を除外
ウィジェットエリア「コンテンツ上部」に以下を配置。
- ウィジェット「カテゴリー」
- ウィジェット「カスタムHTML」に、新着記事ショートコードを記述。
この時、count=-1として、カテゴリーID=169を全て表示する。
[new_list cats=169 count=-1]
●CSSを追加
ウィジェット「カテゴリー」から、除外したカテゴリーIDを非表示する。
カテゴリー=169を除外している為、カテゴリーメニューを選択すると、「NOT FOUND」となる為。
#cat option[value="169"] { display: none; }
●functions.phpを追加
new_listから、除外カテゴリーを削除し、全てのカテゴリーを表示可能にする。
add_filter('widget_entries_args', function($args) { $args["category__not_in"] = null; return $args; });
●雑談
今日、昨日以降と言う分類で記事を表示したいと言う要望、実現案を色々考えて、いい勉強になりました笑
私なら、フロントページを固定ページで作成すると思います。
今日だけの記事(独自ショートコード作成)、カテゴリーごと(各チームごとの記事)と分け。
但し、今日の記事だけは、各チームごとと重複しますが。
但し、今日の記事だけは、各チームごとと重複しますが。
それか、今日の記事と分けず、目立たせる為に、チーム分けした記事に、投稿して1日間だけ記事に「NEW」マークを表示してもいいのかと思いました。
わいひら reacted
問題の解決に至った場合には、トピック冒頭の「解決済み」をクリックしていただけますと幸いです。
また、有用な回答があった場合は返信右下にある「いいね!」もご活用ください。回答者の励みになります。
(CC BY-ND 2.1)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。
フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。
最近の書き込みはこちら。
詳細なカスタマイズ依頼をするならこちら。