Cocoonフォーラム

サイト内検索
書き込みの前に以下の3点をご確認ください。
  1. 1つのトピックにつき1つの質問を書き込んでください
  2. 不具合・カスタマイズ対象ページのURLを提示高速化を無効にしてください
  3. 該当部分のキャプチャ・環境情報とともに書き込んでいただけると助かります

何を書き込んだら良いか分からない場合は、以下のテンプレートをコピペしてご利用ください。

不具合・カスタマイズ対象ページのURL:

相談内容:

不具合の発生手順:

解決のために試したこと:

※文字だけでは正しく伝わらない可能性があるため、スクショ画像の添付もお願いします。
※高速化設定をしている場合は無効にしてください。
環境情報:

※↑こちらに「Cocoon設定 → テーマ情報」にある「環境情報」を貼り付けてください。

環境情報の取得方法はこちら。
https://wp-cocoon.com/theme-report/
高速化設定を無効にするにはこちら。
https://wp-cocoon.com/theme-trouble/

フォーラム利用ガイドリンク

  1. フォーラムガイドライン
  2. よくある質問と答え(FAQ)
  3. サポート対象外のケース
  4. 原因不明の不具合用トラブルシューティング
  5. トピックにHTMLを貼り付ける方法(推奨ツール:notepad.pw
  6. 真っ白画面でのエラーメッセージの確認方法
  7. ブラウザ環境チェックツール
  8. Cocoonカスタマイズ依頼

フォーラム質問後、問題等が解決した場合は結果を書き込んでいただけると幸いです。同様の問題で調べている方には、結果が一番気になる部分となります。

インデックスに表示せず、しかしRSSに...
 
共有:
通知
すべてクリア

[解決済] インデックスに表示せず、しかしRSSには表示させたい

13 投稿
3 ユーザー
10 Reactions
131 表示
(@mitsu)
Eminent Member Registered
結合: 7か月前
投稿: 18
Topic starter  

お世話になります。

「cocoon設定→インデックス」で、特定のカテゴリをインデックスページで非表示(除外)としています。

しかし、この機能を使うとRSSでも表示されない事が分かりました。

https://wp-cocoon.com/do-not-output-posts-that-belong-to-archives/

 

 

もし、この機能を使いながらも、RSSで記事を表示させる方法をご存知の方がいれば、ご教授頂けると幸いです。

 

ちなみに、現在はカルーセルを代用していますが、RSS表示させたいと考えています。

 

何卒よろしくお願い致します。

 

※運営サイト→ https://serisoku.com


   
引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2645
 

●確認

やりたい事が伝わりません。

[Cocoon設定]→[インデックス]→フロントページタイプ「 一覧(デフォルト)」とした。
この時、図示のように除外カテゴリー「今日の新聞一面」を除外設定した。

目的は「今日の新聞一面」の記事一覧と(カルーセルでなく)、
他カテゴリーの記事一覧(「今日の新聞一面」を除外)と、分けて表示したいと言う事でしょうか?

※過去と本日と言うくくりで一覧表示したい?

期待とする、レイアウトを図示して頂くと伝わり易いかと思います。


   
返信引用
はる
(@haruinoue)
Noble Member Moderator
結合: 4年前
投稿: 1080
 

試してはいないのでコードだけ見て回答します。

RSSの時のカテゴリの除外は、functions.phpの251行目でメインクエリの前処理として行われているようです。
なのでここでif (!$query->is_feed) {}の時だけ除外しないように処理を分岐させれば良いと思います。

子テーマのfunctions.phpにcustom_main_query_pre_get_posts()の中身を丸ごとコピペすると、子テーマの内容が優先して適用されるので処理をカスタマイズすることができます。


ただ以下のようにおっしゃっているので、やりたいことは本当に「インデックスに表示せず、しかしRSSには表示させたい」なのかな?とは思いました。

投稿者:: @mitsu

ちなみに、現在はカルーセルを代用していますが、RSS表示させたいと考えています。

RSSは通常、サイト内に表示するというよりも、サイトの読者に記事の投稿を通知するために使われることが多いです。


   
わいひら and chu-ya reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2645
 

●回答

要件は不明なので、私が読みとった内容で回答します。

●設定
[Cocoon設定]→[インデックス]
→フロントページタイプ「一覧(デフォルト)」オン
→除外カテゴリー「今日の新聞一面」オン


●方法

functions.phpにコードを追加、新着記事ショートコードのパラメータから除外カテゴリーを削除。

https://github.com/xserver-inc/cocoon/blob/1fac523fdfee4f5e7cccf217b5755e57b890bfcd/lib/html-forms.php#L1316

ウィジェット「カスタムHTML」をインデックストップに配置。
[new_list cats=今日の新聞一面のカテゴリーID]を記述。

ウィジェット「カテゴリー」のメニュー「今日の新聞一面」を非表示とし除外。

結果、図のようなレイアウトで表示したい????

投稿者:: @haruinoue

RSSは通常、サイト内に表示するというよりも、サイトの読者に記事の投稿を通知するために使われることが多いです。

言われている、RSSは読者に通知するのが目的です。
この為、RSSとカルーセル代用の話が繋がらず

はるさんの言われる通り、RSSから除外される為、読者には「今日の新聞一面」も通知したいと言う事???
すみません、除外カテゴリーにする目的が分かりません


   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2645
 

今見ると、カルーセルでなく、プラグイン「Super RSS Reader」に変わっており。


   
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2645
 

上記ですが、なぜRSSなのか仕様が不明です。
何をしたいのか、回答願います。

●設定

[Cocoon設定]→[インデックス]
→フロントページタイプ「一覧(デフォルト)」
→カードタイプ「エントリーカード(デフォルト)」

除外カテゴリーには何もチェックを付けない。
→結果、インデックス一覧には、今日の新聞の一面も含まれる。


●仕様

投稿順とした場合、「今日の新聞見出し」は、常に一覧の最初に表示される。

投稿日が今日の場合、大見出しを「今日の新聞の見出し」とする。
投稿日が過去の日付の場合、大見出しを「過去の新聞の見出し」とする。

今日の投稿日が無い場合、大見出し「過去の新聞の見出し」のみとなる。


●補足

カテゴリー「今日の新聞の一面」を設ける必要がない。
→結果、RSSにも出力される。


●実現方法

functions.php(20行)でフックを用い、投稿日が今日なのか否か判定し、カードにCSSクラスを追加する。
style.css(14行)、疑似要素でタイトルを追加する。


   
返信引用
(@mitsu)
Eminent Member Registered
結合: 7か月前
投稿: 18
Topic starter  

@chu-ya はる様、この度はアドバイスを頂き有難うございます。

コードを触るとなると、私にとってはなかなかハードルが高いので、色々と勉強してから触ってみます。

特にRSSにこだわりがあるという訳ではないのですが、この新聞のヘッドラインについては「通常のニュース記事とは別」と言った感じで見せたいだけでした。

他の方法も探ってみます。

これに懲りず、引き続きよろしくお願い致します。


   
わいひら reacted
返信引用
(@mitsu)
Eminent Member Registered
結合: 7か月前
投稿: 18
Topic starter  

@chu-ya 様、この度はアドバイスを頂き有難うございました。

サイト運営の上で、通常のニュースもは別に、新聞の見出しをトップページに残しておきたい、という理由から、「トップに記事は載せない」「だけど、トップに目立つように残したい」という事で、RSSを選びました。

説明が足りずに失礼致しました。

とりあえず、プラグインなどを使って、色々と試してみます。

色々とご教授頂き有難うございました。


   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2645
 

@mitsu さん

難しい事を考えずに、フロントページを固定ページで作成してみては。
Gutenbrgエディターを用い、ノーコードでブロックを並べるだけです。
場合に応じ少しのCSS調整は必要ですが。


●案

新着記事ブロックを用い、カテゴリー「今日の今日の新聞見出し」のみの一覧を作成。
「もっと見る」ボタンをクリックすると、「今日の今日の新聞見出し」の投稿一覧を全て表示。

新着記事ブロックを用い、カテゴリー「今日の今日の新聞見出し」除いた一覧を作成。
「もっと見る」ボタンをクリックすると、全投稿一覧を表示。


   
わいひら reacted
返信引用
はる
(@haruinoue)
Noble Member Moderator
結合: 4年前
投稿: 1080
 

投稿者:: @mitsu

特にRSSにこだわりがあるという訳ではないのですが、この新聞のヘッドラインについては「通常のニュース記事とは別」と言った感じで見せたいだけでした。

この用途であればRSSは向かないと思います。
RSSをサイトに埋め込むのは、他サイトの更新情報を自サイトに表示したい時とかですかね。

Cocoonの機能で任意の記事を表示させるのであれば以下のような選択肢があります。

ヘッダー下にお勧め記事カルーセルを表示する方法
→既に試しているよう

おすすめカードウィジェットの使い方
→画像が強調される感じ

意図した記事一覧を作成できる「ナビカード」ショートコードの使い方
→インデックスリストっぽい見た目。ヘッダーに配置するには向かないかも。

新着記事一覧を表示するショートコードの利用方法
→上の2つはメニューから表示する記事を指定する必要がありますが、[new_list ordered_posts=XXX]を使えばショートコードから直接記事を指定できます。


   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2645
 

投稿者:: @haruinoue

[new_list ordered_posts=XXX]を使えばショートコードから直接記事を指定できます。

該当投稿にしろ、該当カテゴリーにしろ
今日の今日の新聞見出し」と言うように、タイトルの通り該当記事を、毎日、人手で入れ替えるのか?
運用によると思います。


   
わいひら reacted
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2645
 

●ご参考

先述の通り、フロントページに固定ページを用います。

独自ショートコード(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
返信引用
chu-ya
(@chu-ya)
Famed Member Registered
結合: 2年前
投稿: 2645
 

@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)準じていれば(リンクを貼っていただければ)転載も自由です。カスタマイズ記事を書く際にコード等をコピペ利用していただいて構いません。

フォーラムの使い方がよくわからない場合は、テストトピックで自由にテストしていただいて構いません。

最近の書き込みはこちら。

詳細なカスタマイズ依頼をするならこちら。

タイトルとURLをコピーしました