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 ...– EAMannApr 2, 2012 at 20:25
-
@EAMann Probably to preserve the privacy of the users creating the posts.– FlimmAug 15, 2017 at 9:28
5 Answers
Copy
/wp-includes/feed-rss2.php
to your theme folderEdit it and make whatever changes you desire (e.g. removing the line for
dc:creator
)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.
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– HongPongJun 5, 2018 at 3:50
-
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 );
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.
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 GitHubhttps://github.com/WordPress/WordPress/
and use it as a boilerplate.– sampohJan 26, 2017 at 11:47