WordPress.org

Forums

How do I delete an RSS feed for a single post? (8 posts)

  1. AuntiAlias
    Member
    Posted 10 years ago #

    I need to do something about the feed for a single post--delete it, or do something to it. It's the 4th most frequently accessed item on my site. The post was one I made 5 months ago, back in January. Haven't touched it since. Comments to the post are closed. But someone keeps hitting the site with that feed. Like over 500 times in the last two days.

    What can I do on my end to shake 'em loose?

  2. Sokrates
    Member
    Posted 10 years ago #

    Off the top of my head, I guess you could use a custom field in the post you want to exclude, something like "rss" with a value of "no"

    Then in wp-rss2.php edit THE LOOP with a test for this custom field to exclude posts where the value of this new custom field = "no"

    Repeat in the other feeds.

    You can adapt the code from this Wiki page for hiding "expired" posts: http://wiki.wordpress.org/?pagename=ExpirePosts

  3. AuntiAlias
    Member
    Posted 10 years ago #

    hmm. thanks for taking a stab at it. I guess, since I just want to do the one, I could pretty much do the same thing by mucking with the database in phpmyadmin? No wait, you're saying that I need to match whatever mucking I do (by custom field or direct database manipulation) with something in a template somewhere that knows how to interpret it. That's a LOT to do in order to get rid of a single wayward feed for a single post.

    heck, maybe I'll just post an addendum to the january message telling someone "if you're subscribed to this feed, you're hitting my server way too much" It may or may not work, but it's about the level of what I want to try for starters.

  4. Sokrates
    Member
    Posted 10 years ago #

    Lol! It's only three lines of code and an entry in the post :)

  5. Kafkaesqui

    Posted 10 years ago #

    Since feeds are handled in a similar manner to how posts are on your blog, part of the problem is that you are in effect asking: "How do I remove a post without removing a post?" Not an easy task...

    A temporary option is to set the post to draft status, thereby removing it from public view, though this will take if off your blog as well. A hack-y option is to place an if statement around the item element in your feed script(s) (within The Loop) that tests if the post ID is *not* the one you want blocked, something like:

    <?php if($post->ID != 100) : ?>
    <item>
    ...
    </item>
    <?php endif; ?>

  6. AuntiAlias
    Member
    Posted 10 years ago #

    @Sokrates, re: the 'only 3 lines of code'

    Then in wp-rss2.php edit THE LOOP with a test for this custom field to exclude posts where the value of this new custom field = "no"

    Alas, not being so handy with the PHP, reading about a test of the custom field causes my eyes to roll back into my head. With my skills (slim to none), we're talking about taking a few to several hours to come up with those three lines of code. Research into all code surrounding custom fields just to use the right name. Puzzling the example you cited to see how --how-- to extrapolate from one to the other. Such things are not obvious to me. At all. Somewhere at this point, I look at my stats again, and say, well, someone hitting this feed 200 times a day (average size in bytes, not kilobytes) isn't so bad, is it? Do I really need to do all this stuff just to get rid of that entry in my top 10 server log? Naaaah. Life is short, breathe deep, move on.

    I wanted to know if there was some kinda twiddly configuration in Options (control panel) or something. Looks like there isn't. Sometimes learning more about the problem to discover that fixing it is more trouble than it's worth is a meaningful solution to the problem. Thanks all the same. :)

  7. Sokrates
    Member
    Posted 10 years ago #

    Just in case you come over funny and decide to give it a go ;-)

    In wp-rss2.php:

    After these lines:

    <language><?php echo get_option('rss_language'); ?></language>

    <?php $items_count = 0; if ($posts) { foreach ($posts as $post) { start_wp(); ?>

    Add:

    <?php list ($post_rss) = get_post_custom_values('rss'); ?>
    <?php if ( $post_rss<>'no') : ?>

    and then after these lines:
    <?php rss_enclosure(); ?>
    </item>

    add:
    <?php endif; ?>

    To exclude a post from the RSS2 feed all you have to do in the "manage post" page is to add a custom field with a value of no.

    narf! Sok.

  8. AuntiAlias
    Member
    Posted 10 years ago #

    Ooh! Thanks! I might just get all funny and give it a go. :)

Topic Closed

This topic has been closed to new replies.

About this Topic

Tags