0

RSS経由で複数のMailChimpニュースレターにコンテンツを提供するブログがあります。最初のニュースレターは問題なく機能しますが、2番目のニュースレターで問題が発生しています。私が抱えている問題は、2番目のニュースレターに「隠された」コンテンツが含まれていることです。このコンテンツは広く消費されることを意図していないため、フロントページには表示されませんが、サイトの他の場所からアクセスできます。これに伴うスナフは、このニュースレターの他のコンテンツが最初のニュースレターと重複する可能性がある一方で、このコンテンツのすべてが非表示になっているわけではなく、一部だけが非表示になっていることです。これにより、すべてを除外することが明らかに問題になります。複数のカテゴリが割り当てられる可能性があり、そのうちのいくつかは非表示にしたくないからです。

私が直面している問題は、このコンテンツをフロントページから除外する方法があるが、メインのRSSフィードからは除外できないことです。これにはWPHidePostを使用しています。これにより、フィードから除外できるようになり、ニュースレターにフィードするフィードを含むすべてのフィードから削除されます。現在、これらのフィードを参照するために/ feed?cat=XXXを使用しています。カテゴリフィードが引き続き機能するようにする方法はありますか?メインの/ feed RSSだけで除外されますか?

4

4 に答える 4

0
add_action('pre_get_posts', 'exclude_category' );
function exclude_category( &$wp_query ) 
    // Exclude from loop, archive and feed but not from category page/feed
   if( is_home() || ( is_feed() && !is_category() ) || ( is_archive() && !is_category() )) { // Exclude from home, feed, but not from category page/feed
        set_query_var('category__not_in', array(120)); // Exclude category with ID 120
    }
}
于 2013-01-25T16:54:55.990 に答える
0

あなたがこれを望んでいるかどうかわかりません。フィードから 1 つまたは複数のカテゴリを除外したいとお考えでしrssた。そのためには、このコード スニペットをfunctions.php

function myFeedExcluder($query) {
    if ($query->is_feed) {
       $query->set('cat','-10'); // excludes category with id 10
    }                            // for multiple you can use ‘-10,-20,-30′  
    return $query;
}
add_filter('pre_get_posts','myFeedExcluder');

また、リンクで直接使用することもできます

<a href="<?php bloginfo('url'); ?>/feed?cat=-10&cat=-20">Entries (RSS)</a>
<a href="<?php bloginfo('url'); ?>/feed=rss2&cat=-10,-20">Entries (RSS)</a>

このプラグインをチェックして、一部の投稿を除外することもできますfeed、私はテストしていません。RSS Feed And More

于 2012-10-16T16:50:59.417 に答える
0

この問題を別の角度から再考する必要がありました。メイン フィードから投稿を除外する代わりに、カテゴリごとに固有のフィードを作成する必要がありました。これにより、これらのフィードがメイン フィードから独立し、WP Hide Posts プラグインの影響を受けないようになりました。

私がしたことは、このファイルを自分のテーマ フォルダにドロップし、このテンプレートを割り当てた空白のページを作成することでした。上部では、作成した各ページを処理し、対応するカテゴリに割り当てています。

<?php 
/* 
Template Name: Custom feeds
*/
$numposts = 10; // number of posts in feed

if ( is_page( 'custom-feed-1' )) {    
    $posts = query_posts('showposts='.$numposts.'&cat=1'); 
} elseif ( is_page( 'custom-feed-2' )) {  
    $posts = query_posts('showposts='.$numposts.'&cat=2');  
} elseif ( is_page( 'custom-feed-3' )) {  
    $posts = query_posts('showposts='.$numposts.'&cat=3'); 
}

$more = 1;

header('Content-Type: '.feed_content_type('rss-http').'; charset='.get_option('blog_charset'), true);
echo '<?xml version="1.0" encoding="'.get_option('blog_charset').'"?'.'>';
?>

<rss version="2.0"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:wfw="http://wellformedweb.org/CommentAPI/"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:atom="http://www.w3.org/2005/Atom"
  xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
  xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
  xmlns:media="http://search.yahoo.com/mrss/">

<channel>
  <title><?php bloginfo_rss('name'); wp_title_rss(); ?> - Article Feed</title>
  <atom:link href="<?php self_link(); ?>" rel="self" type="application/rss+xml" />
  <link><?php bloginfo_rss('url') ?></link>
  <description><?php bloginfo_rss("description") ?></description>
  <lastBuildDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_lastpostmodified('GMT'), false); ?></lastBuildDate>
  <?php the_generator( 'rss2' ); ?>
  <language>en-US</language>
  <sy:updatePeriod><?php echo apply_filters( 'rss_update_period', 'hourly' ); ?></sy:updatePeriod>
  <sy:updateFrequency><?php echo apply_filters( 'rss_update_frequency', '1' ); ?></sy:updateFrequency>
  <?php do_action('rss2_head'); ?>
  <?php while( have_posts()) : the_post(); ?>

  <item>
    <title><?php the_title_rss(); ?></title>
    <link><?php the_permalink_rss(); ?></link>
    <comments><?php comments_link(); ?></comments>
    <pubDate><?php echo mysql2date('D, d M Y H:i:s +0000', get_post_time('Y-m-d H:i:s', true), false); ?></pubDate>
    <dc:creator><?php the_author(); ?></dc:creator>
<?php the_category_rss(); ?>
    <guid isPermaLink="false"><?php the_guid(); ?></guid>
<?php if (get_option('rss_use_excerpt')) : ?>
    <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
<?php else : ?>
    <description><![CDATA[<?php the_excerpt_rss() ?>]]></description>
  <?php if ( strlen( $post->post_content ) > 0 ) : ?> 
    <content:encoded><![CDATA[<?php the_content() ?>]]></content:encoded>
  <?php else : ?>
    <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
  <?php endif; ?>
<?php endif; ?>

<?php do_action('rss2_item'); ?>

  </item>
  <?php endwhile; ?>

</channel>
</rss>

また、このテンプレートを主張したくありません。しばらく前にオンラインで見つけて少し変更しました。どこで見つけたのか思い出せません。

于 2012-10-16T19:57:59.673 に答える