Home 게시판 커뮤니티 Q&A feed 관련 질문이 있습니다.

5개 답변, 2 voices Last updated by Avatar of 082net082net 11 years, 11 months 전
  • Avatar of Jeong daehoJeong daeho
    Participant
    @정대호
    #6671

    가입후 첫글입니다

     

    가입이나 로그인 하는 경로가 안보여서 url을 바로 치구 가입했습니다 –; 이래도 괜찮은지 잘모르겠네요 ;;

     

    질문입니다.

    네이버 신디케이션 api를 워드프레스 플러그인으로 구현하려고합니다.

    플러그인이 포함하고 있는 특정파일로 네이버측에서 접근을 할경우  요청한 글에대한 feed 를 atom 형식으로  출력하려고 합니다.

    워드프레스의 기본 feed 관련 함수를 사용해서 네이버에서 요청하는 템플릿 형식으로 내보내고 싶은데 어떻게 해야하는지 잘모르겠네요 .

    조언 부탁드립니다..

     

    Avatar of Jeong daehoJeong daeho
    Participant
    @정대호
    #6685

    feed 쪽을 하나씩 분석해보려고 하는데요.

    캐쉬때문인지 수정을 해도 바로바로 적용이 안되는데 혹시

    feed 쪽캐쉬를 사용하지 않는다거나 설정을 변경할수 있는방법이있을까요?

    wp-includes/class-feed.php 파일의

    ‘var $lifetime = 43200; //Default lifetime in cache of 12 hours’

    부분을 수정해도 실제로는 적용이 되질 않는것같네요;;

     

    Avatar of 082net082net
    Keymaster
    @082net
    #6691

    말씀하신 경우 워드프레스 쪽 문제는 아니고(새 글이 올라오면 lifetime은 reset될겁니다) 리더쪽 캐쉬 문제일겁니다. feed를 읽는 쪽에서 일정 시간 지나야 새로운 글을 인식하는게 아닌가 합니다. 다른 서비스의 경우 워드프레스 쪽에서 서비스(메타)쪽으로 새로운 글이 올라갔슴을 알리는 ping을 보내기도 합니다. 네이버는 이런 방식이 존재하는지 모르겠네요.

    새로 무언가를 만들지 않고도 ‘template_redirect’ hook를 활용해서 $_SERVER[‘REQUEST_URI’] 가 특정 파일을 요청하고 있을 때, feed 주소로 redirect 시키는 방법도 고려해 보심이 어떨까 합니다.

    Avatar of 082net
    Facebook 사용자 모임 그룹 도 함께 운영되고 있으며, 격 주로 미트업과 스터디를 진행하고 있으니 관심 있으신 분들의 많은 참여 바랍니다 🙂
    Avatar of Jeong daehoJeong daeho
    Participant
    @정대호
    #6699

    @082net 답변 감사합니다.

    글이나 코멘트를 업데이트 시키지 않고 feed 구조를 분석하기 위해 문자열을 찍는다던지 exit 를 준다던지 했습니다. 말씀하신 데로 글이 업데이트 되거나 코멘트가 업데이트 될 경우는 새로운 페이지를 받아 오는것 같습니다.

     

    업데이트가 없을시에는 아래 구문에서 기존에 캐싱된 페이지를 사용하는것같아 코어 수정을 해서 분석 해보았습니다. 물론 코어 수정은 하지 않는것이 좋겠지만.

    class-wp.class line:354

    $headers[‘Last-Modified’] = $wp_last_modified;

    $headers[‘ETag’] = $wp_etag;

     

    새로 무언가를 만들지 않고도 ‘template_redirect’ hook를 활용해서 $_SERVER[‘REQUEST_URI’] 가 특정 파일을 요청하고 있을 때, feed 주소로 redirect 시키는 방법도 고려해 보심이 어떨까 합니다.

    네이버 측에서 보내는 파라미터가 일정치가 않기 때문에 template_redirect 만으로는 해결할수 없을것같습니다.

    add_rewrite_rule, add_filter( ‘query_vars’,), add_filter( ‘template_redirect’,) 를 사용해서

    구현을 하고 있는데 rewrite 가 제가 생각한데로 동작이 되질 않고 있네요 ;;

    add_rewrite_rule( ‘jtnsyndi\.php$’, ‘index.php?syndi=aaa’, ‘top’ );  구문이 리다이렉트가 되질 않는것같습니다. ;; 좀더 분석해보도록 하겠습니다.

     

     

    Avatar of Jeong daehoJeong daeho
    Participant
    @정대호
    #6700

    rewrite_rule 를 추가 할경우

    add_rewrite_rule( ‘^jtnsyndi\.php$’, ‘index.php?syndi=1’, ‘top’ );

    rewrite_rule  만으로는 syndi 변수를 인지 할수가 없는것 같습니다.(확인하는데 몇일이 걸린듯합니다 -_-;)

    따로 flush_rewrite_rules()을 호출하여 추가된 rewrite_rule 을 DB에 등록후에 사용이 가능한것같습니다.

    하지만  flush_rewrite_rules 의 구현내용을 보면 delete_option 을 호출함으로서 option 값을 삭제후 추가 하며 이는 비용을 많이 소비합니다.

    flush_rewrite_rules를 register_activation_hook이나 uninstall.php 파일만으로 처리가 가능한경우는 비용을 줄일수 있지만  이러하지 못한경우 flush_rewrite_rules을 사용하지 않고 rewrite 된 인자(예문의 syndi 변수)를 받아 오는 방법이 있을까요?

     

    Avatar of 082net082net
    Keymaster
    @082net
    #6704

    네이버 신디케이션 API 페이지를 좀 살펴보았는데, 내용이 블로그에 글이 새로 올라갈때 네이버에 핑을 보내서 새로운 글이 떴슴을 알리는 기능이던데요.

    이를 이용해 새로운 서비스를 구현하는것이 아니라, 단순히 이 기능을 사용하려고 하시는 것이라면 따로 플러그인을 만들거나 수정 할 필요없이 워드프레스 설정값에 핑 주소 하나를 추가해 주는것으로 구현이 됩니다. 워드프레스에서는 Update Services 라는 기능이 이미 들어가 있기 때문입니다.

    WP-Admin > Settings > Writing 화면 하단에 Update Services 부분에 네이버 신디케이션 핑 주소를 한 줄 더 넣어주시면 됩니다.

    update-services

    단, 멀티사이트를 사용중이시라면 이 설정값이 기본적으로 숨겨져 있습니다. (개발/관리자가 모든 사이트의 설정을 한번에 플러그인/테마함수를 통해 조정하게 하기 위함입니다. – 보안문제 관련)

    이 경우 ‘ping_sites’ 설정값을 수동으로 추가 입력 해 주어도 되고,
    플러그인을 만들거나 테마의 functions.php 파일에 아래 한 줄을 추가해 넣어주면 위에 말씀드린 화면에 설정 부분이 나타나게 됩니다.

    [code]add_filter( ‘enable_update_services_configuration’, ‘__return_true’, 11 );[/code]

    Avatar of 082net
    Facebook 사용자 모임 그룹 도 함께 운영되고 있으며, 격 주로 미트업과 스터디를 진행하고 있으니 관심 있으신 분들의 많은 참여 바랍니다 🙂
6 글 보임 - 1에서 6 까지 (총 6 중에서)
  • 답변은 로그인 후 가능합니다.