web-dev-qa-db-ja.com

返信フォームに著者名をコメントする

ブログでコメントの返信を有効にしました。 Nickが書いたコメントがあるとしましょう…返事をするときに、返事のフォームヘッダに "Replying to Nick"というメッセージを表示したいです。誰もが知っている?ありがとうございます。

3
Arg Geo

WordPress関数 comment_form_title は、Javascriptが無効になっているユーザー、またはcomment-reply.js JavaScriptがロードされていないページにのみ機能します。

WordPressは、この制限をまったく修正できない可能性があります2つのチケットが以前に開かれ、修正なしで閉じられました。 http://core.trac.wordpress.org/ticket/10084 http://core.trac.wordpress.org/ticket/8639

しかし、私はいくつかの汚い修正を使用することによってそれをデフォルトの20年生のテーマのためにうまく動かすことができました。これはあなたがプラグインとして使うかもしれないコードです。

<?php
/**
 * Plugin Name: Comment Form Title Fix
 * Plugin URI: 
 * Description: WordPress provides comment_form_title function to displays text based on comment reply status. This only affects users with Javascript disabled or pages without the comment-reply.js JavaScript loaded. This plugin provides dirty fix to remove this limitation.
 * Author: tamilsweet
 * Author URI: http://tamilg.in/
 * Version: 0.1
 * Limitation: Tested only with default comment form.
 */

define('CFTF_REPLY_TEXT', 'Leave a Reply');
define('CFTF_REPLY_TO_TEXT', 'Leave a Reply to %s');

// Enable jquery
add_action('init', 'my_script');
function my_script() {
    wp_enqueue_script('jquery');
}

add_filter('comment_reply_link', 'cftf_reply_link');
function cftf_reply_link($link) {
    global $comment;

    $author = get_comment_author();
    $replytext = sprintf( CFTF_REPLY_TO_TEXT, $author );

    $link = str_replace("onclick='return", "onclick='cftf_update_title(\"${replytext}\"); return", $link);
    return $link;
}

add_action('wp_footer', 'cftf_javascript');
function cftf_javascript() {
?>
<script type="text/javascript">
function cftf_update_title(title) {
    var temp = jQuery("#reply-title :first").html();
    jQuery("#reply-title").html(title + '<small>' +  temp + '</small>');
}

jQuery("#cancel-comment-reply-link").live('click', function() {
    var title = "<?php echo CFTF_REPLY_TEXT;?>";
    var temp = jQuery("#reply-title :first").html();
    jQuery("#reply-title").html(title + '<small>' +  temp + '</small>');
});
</script>
<?php
}

すべてのテーマでうまくいくとは限らないことを忘れないでください。

更新:@Arg Geoが使用するカスタムテーマで動作させるため。以下のように関数cftf_javascript()を置き換えてください

function cftf_javascript() {
?>
<script type="text/javascript">
function cftf_update_title(title) {
    jQuery("#reply-title").html(title);
}

jQuery("#cancel-comment-reply-link").live('click', function() {
    var title = "<?php echo CFTF_REPLY_TEXT;?>";
    jQuery("#reply-title").html(title);
});
</script>
<?php
}
2
tamilsweet

JQuery 1.7以降、.live()メソッドは推奨されなくなりました。イベントハンドラを添付するには.on()を使います。

提供されているコードでtamilsweetを置き換えます。

jQuery("#cancel-comment-reply-link").live('click', function() {

付き:

jQuery("#respond").on('click', '#cancel-comment-reply-link', function() {
1
Rod