web-dev-qa-db-ja.com

Wp_list_comments()から "a href"を削除

私の現在のテーマのコメントは以下のコードを使って表示されます。

         <ol class="comment-list">
            <?php
                wp_list_comments( array(
                    'style'      => 'ol',
                    'short_ping' => true,
                ) );
            ?>
        </ol>

私はそれらをコメント投稿者のウェブサイトにリンクさせるべきではないことを意味します。

Codexから wp_list_comments() をチェックしましたが、<a href partを削除する方法が見つかりませんでした。

関数を深く掘り下げるには、 get_comment_author_link() を使用して作成者名を出力します。その機能はフィルタリング可能です。関数の中では、作者がURLを持っているかどうかチェックし、もしあればそれへのリンクで名前をラップします。 get_comment_author_linkフィルタを使用して名前を出力し、URLを無視することができます。このフィルタのコールバックは作者名を引数の1つとして取得するので、これは非常に簡単です。したがって、そのままそれをそのまま渡す必要があります。

function wpse_284352_author_link( $author_link, $author ) {
    return $author;
}
add_filter( 'get_comment_author_link', 'wpse_284352_author_link', 10, 2 );

編集: 実際にはもっと単純です。URLには独自のフィルタがあります。つまり、WordPressの組み込み関数の1行でフィルタ処理できます。

add_filter( 'get_comment_author_url', '__return_empty_string' );
2
Jacob Peattie

あなたはあなた自身のウォーカーを作成し、その構造をカスタマイズすることができます。フィルタを使用するとwp_list_comments() "all" インスタンスに影響するので、ウォーカーを使用してコメントをカスタマイズすることをお勧めします。これが基本的な例です。

function my_comment( $comment, $args, $depth ) {
    $GLOBALS['comment'] = $comment; ?>
    <li <?php comment_class(); ?> id="li-comment-<?php comment_ID(); ?>">
        <div id="comment-<?php comment_ID(); ?>" class="comment-wrap">
            <div class="comment-head comment-author vcard"><?php
                echo get_avatar( $comment, 60 );
                if ( comments_open() ){
                    comment_reply_link( 
                        array_merge( 
                            $args, 
                            array( 
                                'depth' => $depth,
                                'max_depth' => $args['max_depth'], 
                                'reply_text' => __( 'Reply' ) 
                            ) 
                        ) 
                    );
                }?>
                <div class="comment-meta commentmetadata">
                    <div class="comment-date"><?php
                        /* translators: 1: date, 2: time */
                        printf( __( '%1$s at %2$s' ),
                            get_comment_date(),
                            get_comment_time()
                        ); ?>
                    </div><?php
                    edit_comment_link( __( 'Edit' ), '', '' );?>
                </div>
            </div>
            <div class="comment-content comment-text"><?php
                if ( $comment->comment_approved == '0' ) { ?>
                    <em><?php _e( 'Your comment is awaiting moderation.'); ?></em><br /><?php
                }
                comment_text(); ?>
            </div>
        </div>
    <?php
}

これで、コールバックをwp_list_comments()で定義できます。

wp_list_comments( 
    array( 
        'callback' => 'my_comment' ,
        'style'    => 'ol'
    ) 
);

これはそれらへのリンクなしでコメントをレンダリングするでしょう。あなたは完全に出力コメントをカスタマイズすることができます。さらなる情報と複雑な例は codex ページにあります。

0
Jack Johansson