$ post는 특정 시간에 실행되는 후크에만 사용할 수있는 것 같습니다. $ post-> ID를 사용하여 데이터베이스에서 일부 데이터를 가져와야하는 "초기"후크가 있습니다.
지금까지 유일한 해결 방법은 the_content에 다른 필터를 추가하는 것입니다.이 필터는 $ post를 사용하여 필요한 정보를 얻습니다. 불행히도 반환 값을 화면에 표시하고 필터를 원래 호출 한 함수로 실제로 반환하지 않습니다.
필요한 데이터를 추출하지만 값을 반향하여 반환하지 않는 코드는 다음과 같습니다.
add_filter('the_content', 'get_keyword');
function get_keyword()
{
global $post;
$keyword = get_post_meta( $post->ID, '_wpg_def_keyword', true );
return $keyword;
}
누구든지 내가 필요한 것을 얻는 방법에 대한 제안이 있고 나중에 플러그인에서 사용할 수 있도록 호출 함수로 다시 전달합니까?
편집 : 이것을 더 명확하게하기 위해 init에서 실행중인 필터가 있는데, DB에서 현재 게시물에 대한 정보를 검색 할 수 있어야합니다. 이렇게하려면 $ post-> ID에 액세스해야합니다. 그러나 init 내에서는 불가능하므로 필요한 결과를 어떻게 얻을 수 있습니까?
감사,
홍옥
해결 :
대답은 단순히 다음과 같이 url_to_postid를 사용하는 것으로 나타났습니다.
$keyword = get_post_meta(
url_to_postid( "http://".$_SERVER['SERVER_NAME'].$_SERVER['REQUEST_URI'] ),
'_wpg_def_keyword',
true
);
init에서도 완벽하게 작동합니다.
액션 훅은 정확히 같은 방식으로 작동합니다. init가 너무 빠르다는 것을 알고 있습니다. 필요한 결과를 얻는 방법을 알아 내려고 노력 중입니다.이 정보는 init에서 DB에서 정보를 수신하여 $ post-ID를 검색 해야하는 정보입니다.
—
Jonathan
init에서 이것을 정말로 해야 합니까? 나중에 갈래?
—
Rarst
URL에 이미 제공된 키워드가 없으면 페이지의 기본 키워드를 검색해야합니다. 해당 키워드는 DB에 저장되며 나머지 스크립트가 실행되기 전에 알아야합니다. 내가 제공 한 샘플에서 볼 수 있듯이 the_content에서 필요한 값만 얻을 수 있지만 화면에 에코되고 호출 함수로 전혀 전달되지 않습니다. 다른 해결책이 있다면 제안하십시오.
—
Jonathan
솔루션을 답변으로 옮기십시오. 사이트의 역학에 더 가깝습니다. 또한 제목을 풀지 않아도됩니다. 답변을 수락 할 수 있고 질문이 답변 된 것으로 표시됩니다.
—
Rarst
init
있기에는 너무global $post;
이릅니다. 어쩌면 당신이 달성하려는 것을 묘사하면 더 도움이 될 것입니다.