3

Would like to remove <dc:creator> or edit it to be a static value without editing core Wordpress files. Preferably as a function.

  • Why do you want to remove/edit this field? It's a fairly standard RSS field ... – EAMann Apr 2 '12 at 20:25
  • @EAMann Probably to preserve the privacy of the users creating the posts. – Flimm Aug 15 '17 at 9:28
6
  1. Copy /wp-includes/feed-rss2.php to your theme folder

  2. Edit it and make whatever changes you desire (e.g. removing the line for dc:creator)

  3. in your theme's functions.php file, add the following function:

remove_all_actions( 'do_feed_rss2' );  
function create_my_custom_feed() {  
    load_template( TEMPLATEPATH . '/feed-rss2.php');  
}  
add_action('do_feed_rss2', 'create_my_custom_feed', 10, 1);

Edit by Otto: While that will work, this would be a better way:

function create_my_custom_feed() {  
    load_template( TEMPLATEPATH . '/feed-rss2.php');  
}  
add_feed('rss2', 'create_my_custom_feed');

The add_feed() function is smart, and will handle the actions and such for you.

Note: It will require a one-time use of flush_rules() to take effect.

5

I was going to use the above answer from Otto but the more I looked at the templates the more it dawned on me that you don't need all that.

Just hook the_author filter and check is_feed if you want a RSS specific author.

function f_the_author( $display_name ) {

    // $display_name === string $authordata->display_name

    if ( is_feed() ) {
        return 'Static Feed Author Display Name Here';
    }

    return "Static Author Display Name";
}

add_filter( 'the_author', 'f_the_author', PHP_INT_MAX, 1 );
  • this worked quickly, simply pasting in as above into the functions.php for the theme. No cache clearing needed, instant effect. Thanks jgraup – HongPong Jun 5 '18 at 3:50
1

For those who don't want to do a PHP script hack. The field simply displays the author name of the post. If you want to change what it says, go to the WP admin, then go to 'Users' -> 'Your Profile' (or go to the specific user you want to change). Then change the field 'Display name publicly as' to what you want to show in the RSS feed.

0

Unfortunately, that element is hard-coded into WordPress core. Take a look at /wp-includes/feed-rss2.php:

<item>
    <title><?php the_title_rss() ?></title>
    <link><?php the_permalink_rss() ?></link>
    <comments><?php comments_link_feed(); ?></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('rss2') ?>

    <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_feed('rss2') ?>]]></content:encoded>
    <?php else : ?>
        <content:encoded><![CDATA[<?php the_excerpt_rss() ?>]]></content:encoded>
    <?php endif; ?>
<?php endif; ?>
    <wfw:commentRss><?php echo esc_url( get_post_comments_feed_link(null, 'rss2') ); ?></wfw:commentRss>
    <slash:comments><?php echo get_comments_number(); ?></slash:comments>
<?php rss_enclosure(); ?>
<?php do_action('rss2_item'); ?>
</item>
  • You can find the latest version (and others as well) of feed-rss2.php from GitHub https://github.com/WordPress/WordPress/ and use it as a boilerplate. – sampoh Jan 26 '17 at 11:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.