web-dev-qa-db-ja.com

頭からCPTコメントフィードを削除する方法?

カスタム投稿タイプではhas_archivefalseに設定しました。しかし、CPTページの先頭には、まだ次のようなフィードへのリンクがあります。

<link … title="Page Title | Comments Feed" href="domain/cpt/slug/feed/" />

フィードが存在しません - リンクは404エラーを生成します。通常の投稿のコメントフィードにのみ影響するフィルタfeed_links_show_comments_feedを使用してリンクを削除しようとしました。

add_filter( 'feed_links_show_comments_feed', '__return_false' );

…cptコメントフィードはまだありました。

また、allフィードを削除しようとしました - これもすべてのフィードで動作しましたが、削除したいフィードも同様でした。

remove_action( 'wp_head', 'feed_links', 2 );

しかし、もし私がhas_archivetrueに設定するならば、リンクは実際に有効なコメントのRSSフィードにつながるでしょう - それは私が基本的に気にしないであろう。しかし、私はhas_archivetrueに設定することはできません。なぜなら私はいくつかのカスタムページのためのベーススラッグを必要とし、アーカイブページをスラッグのURLに表示したくないからです。

誰かが私を正しい方向に向けることができるといいのですが?すべてのポインターは歓迎します。ありがとうございました!

1
tillinberlin

次のコマンドは投稿のコメントフィードを非表示にします(WP 4.4以降が必要です)が、カスタムページにはコメントが無効になっていてもコメントフィードが表示されたままになります。

add_filter( 'feed_links_show_comments_feed', '__return_false' );

これを解決するために、私はこの追加コードも追加しなければなりませんでした:

function remove_comments_rss( $for_comments ) {
    return;
}
add_filter('post_comments_feed_link','remove_comments_rss');
3
user2100505

カスタム投稿タイプのコメントフィードは、 comments_open フィルタを使用して、特定の投稿タイプに対してコメントを閉じるようにWordPressに指示することで削除できます。

  function close_comments( $open, $post_id ) {
    if ( 'cpt' == get_post_type( $post_id ) ) {
      $open = false;
    }
    return $open;
  }
  add_filter( 'comments_open', 'close_comments', 10, 2 );

必ず 'cpt'をあなたの投稿タイプ名に置き換えてください。

0
Jeroen Schmit