가입이나 로그인 하는 경로가 안보여서 url을 바로 치구 가입했습니다 –; 이래도 괜찮은지 잘모르겠네요 ;;
질문입니다.
네이버 신디케이션 api를 워드프레스 플러그인으로 구현하려고합니다.
플러그인이 포함하고 있는 특정파일로 네이버측에서 접근을 할경우 요청한 글에대한 feed 를 atom 형식으로 출력하려고 합니다.
워드프레스의 기본 feed 관련 함수를 사용해서 네이버에서 요청하는 템플릿 형식으로 내보내고 싶은데 어떻게 해야하는지 잘모르겠네요 .
조언 부탁드립니다..
캐쉬때문인지 수정을 해도 바로바로 적용이 안되는데 혹시
feed 쪽캐쉬를 사용하지 않는다거나 설정을 변경할수 있는방법이있을까요?
wp-includes/class-feed.php 파일의
‘var $lifetime = 43200; //Default lifetime in cache of 12 hours’
부분을 수정해도 실제로는 적용이 되질 않는것같네요;;
새로 무언가를 만들지 않고도 ‘template_redirect’ hook를 활용해서 $_SERVER[‘REQUEST_URI’] 가 특정 파일을 요청하고 있을 때, feed 주소로 redirect 시키는 방법도 고려해 보심이 어떨까 합니다.
글이나 코멘트를 업데이트 시키지 않고 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’ ); 구문이 리다이렉트가 되질 않는것같습니다. ;; 좀더 분석해보도록 하겠습니다.
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 변수)를 받아 오는 방법이 있을까요?
이를 이용해 새로운 서비스를 구현하는것이 아니라, 단순히 이 기능을 사용하려고 하시는 것이라면 따로 플러그인을 만들거나 수정 할 필요없이 워드프레스 설정값에 핑 주소 하나를 추가해 주는것으로 구현이 됩니다. 워드프레스에서는 Update Services 라는 기능이 이미 들어가 있기 때문입니다.
WP-Admin > Settings > Writing 화면 하단에 Update Services 부분에 네이버 신디케이션 핑 주소를 한 줄 더 넣어주시면 됩니다.
단, 멀티사이트를 사용중이시라면 이 설정값이 기본적으로 숨겨져 있습니다. (개발/관리자가 모든 사이트의 설정을 한번에 플러그인/테마함수를 통해 조정하게 하기 위함입니다. – 보안문제 관련)
이 경우 ‘ping_sites’ 설정값을 수동으로 추가 입력 해 주어도 되고,
플러그인을 만들거나 테마의 functions.php 파일에 아래 한 줄을 추가해 넣어주면 위에 말씀드린 화면에 설정 부분이 나타나게 됩니다.
[code]add_filter( ‘enable_update_services_configuration’, ‘__return_true’, 11 );[/code]