WordPress Snippet

ワードプレスをカスタマイズしよう

コメント作成者 URLの表示

投稿日: by

コメント作成者 URLの表示

投稿日: by

コメント作成者のURLをテンプレートに表示する時

URLのない作成者でも、空のハイパーリンクが出来ます。

URLがない場合は、作成者の名前だけを表示するようにカスタマイズします。

コメントループの例:twentyten

if ( ! function_exists( 'twentyten_comment' ) ) :
/**
 * Template for comments and pingbacks.
 *
 * To override this walker in a child theme without modifying the comments template
 * simply create your own twentyten_comment(), and that function will be used instead.
 *
 * Used as a callback by wp_list_comments() for displaying the comments.
 *
 * @since Twenty Ten 1.0
 */
function twentyten_comment( $comment, $args, $depth ) {
	$GLOBALS['comment']= $comment; ?>
	< ?php if ( ''== $comment->comment_type ) : ?>
	<li <?php comment_class(); ?> id="li-comment-< ?php comment_ID(); ?>">
		<div id="comment-<?php comment_ID(); ?>">
		<div class="comment-author vcard">
			< ?php echo get_avatar( $comment, 40 ); ?>
			< ?php printf( __( '%s <span class="says">says:', 'twentyten' ), sprintf( '<cite class="fn">%s</cite>', get_comment_author_link() ) ); ?>
		</div><!-- .comment-author .vcard -->
		< ?php if ( $comment->comment_approved== '0' ) : ?>
			<em>< ?php _e( 'Your comment is awaiting moderation.', 'twentyten' ); ?></em>
			<br />
		< ?php endif; ?>

		<div class="comment-meta commentmetadata"><a href="<?php echo esc_url( get_comment_link( $comment->comment_ID ) ); ?>">
			< ?php
				/* translators: 1: date, 2: time */
				printf( __( '%1$s at %2$s', 'twentyten' ), get_comment_date(), get_comment_time() ); ?></a>< ?php edit_comment_link( __( '(Edit)', 'twentyten' ), ' ' );
			?>
		</div><!-- .comment-meta .commentmetadata -->

		<div class="comment-body">< ?php comment_text(); ?>
		< ?php
		
		//コメント発行者のURL テスト
		
		?>
		
< ?php comment_author_url_link();?>
		
		</div>

		<div class="reply">
			< ?php comment_reply_link( array_merge( $args, array( 'depth'=> $depth, 'max_depth'=> $args['max_depth'] ) ) ); ?>
		</div><!-- .reply -->
	</div><!-- #comment-## -->

	< ?php else : ?>
	</li><li class="post pingback">
		<p>< ?php _e( 'Pingback:', 'twentyten' ); ?> < ?php comment_author_link(); ?>< ?php edit_comment_link( __('(Edit)', 'twentyten'), ' ' ); ?></p>
	< ?php endif;
}
endif;
?>

functions.phpへフィルタ関数を作成します。

add_filter("get_comment_author_url_link","is_goodlink");

function is_goodlink($hyper_link_set){

	if(preg_match(" |(https?:\/\/)([-_.!˜*\'()a-zA-Z0-9;\/?:@&=+$,%#]+) |siu",$hyper_link_set,$regs)){
	
		$url= esc_url($regs[1]);
		$hyper_link_set= str_replace($regs[1],$url,$hyper_link_set);
		
		return $hyper_link_set;
	}
		return sanitize_user(comment_author());	
}