스레드되지 않은 주석은 원래 주석에 대한 링크로 응답합니다.


10

내가 성취하려고하는 것을 설명 할 것이다.

각 댓글에 대한 답변 링크가있는 일반 비 스레드 (평평한 / 클래식) 의견을 갖고 싶습니다. 누군가가 댓글에 답장을 올리면 답글 댓글은 기본 비스 레드 댓글과 마찬가지로 최신 댓글로 맨 위 또는 맨 아래에 표시되지만 기본 비스 레드 댓글과 달리 답장에 대한 링크가 표시되어야합니다. 원래 의견 / 저자.

워드 프레스 포럼에서 제안 된 솔루션이 있습니다.

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 );
    } 
  }
}

이것은 "회신에 함께 빈 페이지를 반환 AUTHORNAME ". 게시물을 다시로드하면 회신 댓글이 올바르게 표시되지만 원래 댓글에 대한 링크는 없습니다.

코딩 기술은 매우 기본적이므로 어떻게 진행해야할지 잘 모릅니다. 도움을 주셔서 감사합니다.


의 내용 무엇 hrefa요소 검사 '크롬에서 도구 (또는 선택의 브라우저에 유사)'를 따라 응답 to`에서 '다음?
mor7ifer

많은 시행 착오 끝에 문제를 해결했습니다. 비결은 코드 조각을 올바른 순서로 가져와 주석 및 함수 파일에 배치하는 것이 었습니다. s%1$s인수로 처리하고, 문자열로 표현된다는 것을 의미한다. 이것은 sprintf 함수에 대한 PHP 매뉴얼에 자세히 설명되어 있습니다 : php.net/manual/en/function.sprintf.php
sarytash

3
사이트를 체계적으로 유지하고 같은 문제를 겪은 사람이 사이트를 빠르고 효율적으로 극복 할 수 있도록 솔루션으로 수행 한 작업을 제출해야합니다.
mor7ifer

예, 효과적인 솔루션을 게시 할 수 있다면 가능합니다.
Borek Bernard

1
동의,이 행동을보고 싶어요.
helgatheviking

답변:


4

이것은 내 솔루션이며 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. 테마에 콜백이 없으면 테마를 만들어야합니다. 기본적으로 "wp-includes / comment-template.php"에있는 Walker_Comment 클래스의 start_el 메소드 내용이 사용됩니다. 이를 복사하거나 테마의 콜백을 복사하고 함수의 이름을로 변경하십시오 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답장 댓글의 ID이며 get_comment_link($comment->comment_parent)상위 앵커의 URL (전체 앵커 마크 업이 아님)을 제공합니다. 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>';

그게 다야. 이제 특정 주석에 주석을 달 수 있지만 일단 게시 된 주석은로드 순서에 따라 주석 목록의 끝 또는 시작 부분에 나타납니다.

WordPress 3.4.1에서 TwentyEleven으로 테스트되었습니다 (약간 구식이지만 이미 내 개발 서버에 있습니다). 테마 또는 플러그인이 이것을 깨뜨리기 위해 할 수있는 일이 있다고 확신하지만 잘 작동하는 테마 또는 플러그인이 그것을 깨뜨릴 것이라고 생각하지 않습니다.

그것은 그 날의 좋은 일입니다. 문제가 발생하면 알려주십시오.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.