Ответы, не связанные с потоком, со ссылкой на исходный комментарий

Я объясню, что я пытаюсь выполнить.

Я хотел бы иметь регулярные не-поточные (плоские / классические) комментарии с ответной ссылкой на каждый комментарий. Когда кто-то отвечает на комментарий, ответ будет заканчиваться вверху (или внизу) в качестве последнего комментария так же, как и в по-умолчанию не-threaded комментариях, но в отличие от стандартного не-threaded комментария ответ должен отображать ссылку на оригинальный комментарий / автор.

На форуме wordpress есть предлагаемое решение:

http://wordpress.org/support/topic/reply-to-link-for-chronological-non-threaded-comments

Я просто не работаю. Я не уверен, в каких файлах плакат размещает разные фрагменты кода. Я попытался использовать код и подключить функцию к comment_post:

add_action('comment_post', 'print_reply_link', 10, 2); function print_reply_link( $comment_id, $approved ){ if( $approved ){ $comment = get_comment( $comment_id ); if ( $comment->comment_parent ) { $parent = get_comment( $comment->comment_parent ); $parent_link = esc_url( get_comment_link( $comment->comment_parent ) ); printf( ' in reply to <a href="%1$s">%2$s</a>', $parent_link, $parent->comment_author ); } } } 

Это возвращает пустую страницу с именем «в ответ на имя автора ». После перезагрузки сообщения комментарий ответа отображается правильно, но без ссылки на исходный комментарий

Мои навыки кодирования действительно очень простые, поэтому я не имею никакой идеи, как я должен действовать. Был бы очень благодарен за любую помощь.

Solutions Collecting From Web of "Ответы, не связанные с потоком, со ссылкой на исходный комментарий"

Это мое решение, а не предлагаемое решение, предлагаемое на форумах WordPress. Оказывается, это довольно легко, но включает в себя несколько шагов.

1) Перейдите в wp-admin-> Настройки-> Обсуждение и выключите потоковые комментарии. Это отключит потоки, которые мы хотим, но также удалим возможность «ответить» на конкретный комментарий. Мы должны вернуть это обратно.

2) Добавьте скрипт ниже к функции functions.php вашей темы или к плагину.

 function load_script_for_fake_threading() { if (is_singular()) wp_enqueue_script('comment-reply'); } add_action('wp_enqueue_scripts','load_script_for_fake_threading'); 

3) Печать комментариев обрабатывается обратным вызовом wp_list_comments . TwentyEleven использует функцию twentyeleven_comment() в своих functions.php . Если ваша тема не имеет обратного вызова, вам нужно будет создать ее. По умолчанию используется контент метода start_el класса Walker_Comment в «wp-includes / comment-template.php». Скопируйте это или скопируйте обратный вызов темы и переименуйте функцию в fake_threaded_comment .

3) Найдите функцию wp_list_comments в comments.php вашей темы и измените обратный вызов. Он должен выглядеть так:

 wp_list_comments(array('callback'=>'fake_threaded_comment')); 

4) Теперь мы собираемся немного обмануть. В этом обратном вызове «fake_threaded_comment» должен быть вызван вызов функции comment_reply_link . Мы должны отредактировать его так, чтобы мы проходили жестко закодированные аргументы «depth» и «max_depth». Мы устанавливаем «depth» на 1 и max_depth на 2. Это приведет к возврату нашей кнопки «Ответить» / ссылке.

 comment_reply_link( array_merge( $args, array( 'reply_text' => __( 'Reply <span>&darr;</span>', 'themetextdomainname' ), 'depth' => 1, 'max_depth' => 2 ))); 

5) Установите ссылку на родительский комментарий. На стороне функции обратного вызова вы, возможно, заметили ссылки на $comment . $comment->comment_parent – это идентификатор get_comment_link($comment->comment_parent) комментария, а get_comment_link($comment->comment_parent) указывает URL-адрес родительского комментария (а не полную get_comment_link($comment->comment_parent) привязки). get_comment($comment->comment_parent) получит данные родительского комментария. Итак, что-то вроде …

 $pcom = get_comment($comment->comment_parent); echo '<a href="'.get_comment_link($comment->comment_parent).'">This is a reply to '.$pcom->comment_author.'</a>'; 

Вот и все. Теперь вы можете комментировать некоторые комментарии, но после опубликования комментарий появится в конце или в начале списка комментариев в зависимости от порядка загрузки.

Протестировано с TwentyEleven на WordPress 3.4.1 (немного устаревшее, но оно уже на моем dev-сервере). Я уверен, что есть вещи, которые могут сделать те или плагины, чтобы сломать это, но я не думаю, что тема с хорошим поведением или плагин нарушил бы ее.

Это мое доброе дело за день. Пожалуйста, дайте мне знать, если что-то пойдет не так.