6

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

2
  • Why do you want to remove/edit this field? It's a fairly standard RSS field ...
    – EAMann
    Apr 2, 2012 at 20:25
  • @EAMann Probably to preserve the privacy of the users creating the posts.
    – Flimm
    Aug 15, 2017 at 9:28

5 Answers 5

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.

9

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 );
2
  • 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, 2018 at 3:50
  • Perfect! This should be the approved answer Jan 11, 2022 at 12:32
2

We were unable to get any of the other answers to this question to work for us. Maybe it was due to the theme we're using.

@Biranit Goren's solution resulted in a 500 error when we tried to load our RSS feed.

@jgraup's solution does work, but the Author field in all of our views for posts, pages, events, media library, etc. show as blank when we use the code in our functions.php file.

We did find the following, which worked. Credit goes to the following article: https://www.flynsarmy.com/2013/10/add-to-or-override-the-default-wordpress-rss-feed/

Copy the feed-rss2.php from the wp-includes directory to your child theme directory.

Modify the feed-rss2.php in your child theme's diectory as desired.

Add the following to your child theme’s functions.php file

remove_all_actions( 'do_feed_rss2' );
add_action( 'do_feed_rss2', function( $for_comments ) {
    if ( $for_comments )
        load_template( ABSPATH . WPINC . '/feed-rss2-comments.php' );
    else
    {
        if ( $rss_template = locate_template( 'feed-rss2.php' ) )
            // locate_template() returns path to file
            // if either the child theme or the parent theme have overridden the template
            load_template( $rss_template );
        else
            load_template( ABSPATH . WPINC . '/feed-rss2.php' );
    }
}, 10, 1 );
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>
1
  • 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, 2017 at 11:47

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

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