[HOWTO] Make disqus comments do-follow in WordPress

I am using Disqus Comment System v2.61 and it shows comments as nofollow. This is a concern for several WordPress users as their commentators may not be interested to comment if they get no link love via comment url. The disqus comments are later generated by Javascript but it also contains the basic comments for browsers without Javascript. While I have not yet figured out how the Javascript later inserts “nofollow” attribute later when regenerating the comments with Javascript, I have figured out how to remove the ‘rel=”nofollow”‘ from the link of the basic page, which should work for search engine robots. In the version of Disqus Comment System I am using, the comment_author_url() seems to not work. So, I replaced it with get_comment_author_url() and it seems to work. Following is the new comments.php which shows the links as do-follow.

<?php
if (DISQUS_DEBUG) {
	echo "<p><strong>Disqus Debug</strong> thread_id: ".get_post_meta($post->ID, 'dsq_thread_id', true)."</p>";
}
?>
 
<div id="disqus_thread">
	<?php if (!get_option('disqus_disable_ssr')): ?>
		<?php
		// if (is_file(TEMPLATEPATH . '/comments.php')) {
		// 	include(TEMPLATEPATH . '/comments.php');
		// }
		?>
		<div id="dsq-content">
			<ul id="dsq-comments">
	<?php foreach ($comments as $comment) : ?>
				<li id="dsq-comment-<?php echo comment_ID(); ?>">
					<div id="dsq-comment-header-<?php echo comment_ID(); ?>" class="dsq-comment-header">
						<cite id="dsq-cite-<?php echo comment_ID(); ?>">
	<?php if(get_comment_author_url()) : ?>
							<a id="dsq-author-user-<?php echo comment_ID(); ?>" href="<?php echo get_comment_author_url(); ?>" target="_blank"><?php echo comment_author(); ?></a>
	<?php else : ?>
							<span id="dsq-author-user-<?php echo comment_ID(); ?>"><?php echo comment_author(); ?></span>
	<?php endif; ?>
						</cite>
					</div>
					<div id="dsq-comment-body-<?php echo comment_ID(); ?>" class="dsq-comment-body">
						<div id="dsq-comment-message-<?php echo comment_ID(); ?>" class="dsq-comment-message"><?php echo wp_filter_kses(comment_text()); ?></div>
					</div>
				</li>
	<?php endforeach; ?>
			</ul>
		</div>
	<?php endif; ?>
</div>
 
<a href="http://disqus.com" class="dsq-brlink">blog comments powered by <span class="logo-disqus">Disqus</span></a>
 
<script type="text/javascript">
/* <![CDATA[ */
	var disqus_url = '<?php echo get_permalink(); ?> ';
	var disqus_identifier = '<?php echo dsq_identifier_for_post($post); ?>';
	var disqus_container_id = 'disqus_thread';
	var disqus_domain = '<?php echo DISQUS_DOMAIN; ?>';
	var disqus_shortname = '<?php echo strtolower(get_option('disqus_forum_url')); ?>';
	var disqus_title = <?php echo cf_json_encode(dsq_title_for_post($post)); ?>;
	<?php if (false && get_option('disqus_developer')): ?>
		var disqus_developer = 1;
	<?php endif; ?>
	var disqus_config = function () {
	    var config = this; // Access to the config object
 
	    /* 
	       All currently supported events:
	        * preData — fires just before we request for initial data
	        * preInit - fires after we get initial data but before we load any dependencies
	        * onInit  - fires when all dependencies are resolved but before dtpl template is rendered
	        * afterRender - fires when template is rendered but before we show it
	        * onReady - everything is done
	     */
 
		config.callbacks.preData.push(function() {
			// clear out the container (its filled for SEO/legacy purposes)
			document.getElementById(disqus_container_id).innerHTML = '';
		});
		<?php if (!get_option('disqus_manual_sync')): ?>
		config.callbacks.onReady.push(function() {
			// sync comments in the background so we don't block the page
			DISQUS.request.get('?cf_action=sync_comments&post_id=<?php echo $post->ID; ?>');
		});
		<?php endif; ?>
		<?php
		$sso = dsq_sso();
		if ($sso) {
		    foreach ($sso as $k=>$v) {
		        echo "this.page.{$k} = '{$v}';\n";
		    }
		}
		?>
	};
	var facebookXdReceiverPath = '<?php echo DSQ_PLUGIN_URL . '/xd_receiver.htm' ?>';
/* ]]> */
</script>
 
<script type="text/javascript">
/* <![CDATA[ */
	var DsqLocal = {
		'trackbacks': [
<?php
	$count = 0;
	foreach ($comments as $comment) {
		$comment_type = get_comment_type();
		if ( $comment_type != 'comment' ) {
			if( $count ) { echo ','; }
?>
			{
				'author_name':	<?php echo cf_json_encode(get_comment_author()); ?>,
				'author_url':	<?php echo cf_json_encode(get_comment_author_url()); ?>,
				'date':			<?php echo cf_json_encode(get_comment_date('m/d/Y h:i A')); ?>,
				'excerpt':		<?php echo cf_json_encode(str_replace(array("\r\n", "\n", "\r"), '<br />', get_comment_excerpt())); ?>,
				'type':			<?php echo cf_json_encode($comment_type); ?>
			}
<?php
			$count++;
		}
	}
?>
		],
		'trackback_url': <?php echo cf_json_encode(get_trackback_url()); ?>
	};
/* ]]> */
</script>
 
<script type="text/javascript">
/* <![CDATA[ */
(function() {
	var dsq = document.createElement('script'); dsq.type = 'text/javascript';
	dsq.async = true;
	dsq.src = 'http://' + disqus_shortname + '.' + disqus_domain + '/embed.js?pname=wordpress&pver=<?php echo DISQUS_VERSION; ?>';
	(document.getElementsByTagName('head')[0] || document.getElementsByTagName('body')[0]).appendChild(dsq);
})();
/* ]]> */
</script>

You can replace your current comments.php with this file and have do-follow links for your blog readers. I have implemented it on this blog. Comment here and check the page source of my website to see a dofollow link to your website.

If you enjoyed this post, make sure you subscribe to my RSS feed!
  • muneebpv

    how can premoderate comments?

  • me

    i have problem with premoderation

  • http://www.hacksocially.com
    Hope it works…

  • pcosdiaries

    I remember through Blogspot I changed comments from no follow to do follow. But since I add Disqus I need to check if this overrides the settings I did through HTML.

  • Mark Torres

    The disqus comments are later generated by Javascript but it also contains the basic comments for browsers without Javascript.

  • I think that Disqus should be all Do Follow. Thanks for the information.

  • Thanks, I was searching everywhere for this

  • ajier77

    I am going to try your tip

  • how to make disqus dofollow in drupal

  • it very good for seo

  • You created this content good and extremely partaking and that i assume that is nice.

  • Must needed stuffs because do-follow links are very beneficial, especially for the seo guys to link back strong backlinks.

  • Thanks for the post. I appreciate the info on blog comments and will surely start looking out for people who are using automated programmes for making blog comment posts. code nice. i love you

  • Thank you for sharing a very useful information

  • thank you

  • thanks i was looking for this I appreciate the info on blog comments and will surely start looking
    out for people who are using automated programmes for making blog
    comment posts. code nice. i love you

  • need to be for and use, that is the very useful

  • I think Disqus comments are “nofollowed”. I’m not sure if this is good
    or bad. I did have comments “dofollowed” and the amount of spam I had to
    deal with increased significantly.

  • I did have comments “dofollowed” and the amount of spam I had to
    deal with increased significantly.

  • very good tutorial i will try 🙂

  • Vild

    thanks for notifing us with those news , all the webmaster must read such news and fix it , tak a look in my site :
    Bon Prix Tunisie