질문과 답변이 재검토되었습니다
때때로 당신을 잔소리하고 나중에 다시 사냥하는 이러한 질문이 있으며, 이것은 그러한 질문 중 하나입니다.
이 질문은 문제의 대안 솔루션에 대해 생각하게했습니다. 이미 언급했듯이 사용자 정의 필드와 메타 박스는 작은 메타 데이터 조각을 저장하기 위해 있으며 짧은 코드와 기능을 실행할 수있는 콘텐츠를 게시하는 확장 기능으로 작동하지 않습니다. 또한 이미 언급했듯이 귀하의 방법이 잘못되어 사용해서는 안됩니다
내가 게시물에서 흥미로운 것을 발견 한 것은 사용자 정의 필드와 메타 상자를 사용하여 사용자 입력에서 사용자 정의 컨텐츠를 실수로 표시한다는 것입니다. 그래서 나는 앉아서이 작업을 수행하고 사용자 정의 필드 데이터와 메타 박스 데이터를 올바르게 사용할 수있는 가능한 방법을 생각했습니다.
이것이 나의 생각이다 :
시나리오 :
참고 : 이것은 필요에 맞게 수정할 수 있습니다
단일 게시물에서 사용자는 필요에 따라 게시물 뒤에 사용자 정의 컨텐츠를 동적으로 표시하기를 원하거나 요구합니다. 동적이어야합니다. 콘텐츠는 사용자 지정 쿼리 여야하며 사용자는 원할 때마다 표시 할 내용과 원하는 것을 선택해야합니다.
가능한 해결책 :
단축 코드는 사용자 정의 필드에서 실행할 수 없으므로 여기서는 단축 코드가 작동하지 않습니다. do_shortcode
동적이 아니며 하드 코딩되어 있기 때문에 원하지 않는 것도 작동하지 않습니다. 귀하의 질문 에서처럼, 우리는 사용자 정의 필드를 사용할 것입니다. 다시 강조하지만 사용자 정의 필드를 사용하여 사용자 정의 쿼리 또는 단축 코드를 실행하지 마십시오
계획:
사용자 정의 필드를 사용하여 쿼리 인수 만 저장 하면 됩니다 . 우리가하는 일은이라는 사용자 정의 필드를 만드는 것 custom_query_arguments
입니다. 글쓰기 에디터 화면에서 사용자 정의 필드를 볼 수 있습니다.
다음 단계는 사용자 정의 쿼리 인수를 필드에 추가하는 것입니다. 제목 1을 기준으로 카테고리 1의 게시물 3 개를 표시해야합니다. 따라서 쿼리 인수는 다음과 같아야합니다. ( 문자열 형식 )
'posts_per_page=3&cat=1&orderby=title'
이것이 이제 사용자 정의 필드에 입력해야합니다. 입력 한 후 사용자 정의 필드의 값을 저장하십시오
다음은 single.php에 커스텀 쿼리를 구성하는 것입니다. 여기서 필요한 것은 실제로 쿼리 인수 인 사용자 정의 필드에서 값 WP_Query
을 가져 와서 새 검색 인스턴스에 피드 를 가져와야합니다. 또한 해당 사용자 정의 필드에 실제로 저장된 값이 있는지 확인해야합니다. 사용자 정의 필드가 비어 있으면 아무것도 표시하지 않습니다
코드:
single post 직후에 single.php에서 이와 같은 것을 시도 할 수 있습니다.
$args = get_post_meta( get_queried_object_id(), 'custom_query_arguments', true );
// check if the custom field has a value
if( ! empty( $args ) ) {
$q = new WP_Query( $args );
if( $q->have_posts() ) {
while( $q->have_posts() ) {
$q->the_post();
the_title();
}
wp_reset_postdata();
}
}
사용자가 사용자 정의 쿼리를 제거하려면 사용자 정의 필드의 값을 삭제하고 사용자 정의 필드를 비워두면됩니다. 동일한 검색어를 표시해야하지만 카테고리 10과 총 5 개의 게시물을 표시해야하는 경우 원래 값을 다음으로 대체 할 수 있습니다.
'posts_per_page=5&cat=10&orderby=title'
몇 가지 참고 사항 :
이 사용자 정의 필드 및 메타 상자에 정보를 입력 할 때 올바른 구문 및 형식을 사용해야합니다. 구문 오류 또는 잘못된 정보는 원하지 않는 출력 또는 치명적인 오류로 이어집니다. 고객에게 그러한 정보를 알리는 것이 중요합니다
원래 답변
나는 당신이 성취하려고하는 것을 이해하지 못하지만, 내가 말할 수있는 것에서 그것들은 두 가지 별개의 것입니다
옵션 1
apply_filters('the_content', $content);
는 필터링되지 않은 원시 게시물 콘텐츠에 콘텐츠 필터를 적용하는 데 사용되며 일반적으로의 사용에서 비롯됩니다 $post->post_content
. 이 필터에는 wp_autop
p 태그를 추가 하는 유명한 필터 가 포함 됩니다.the_content()
apply_filters('the_content', $content);
템플릿 태그 를 사용 가능 하게 만드는 사용하지 않고 객체 get_posts
와 직접 작동 하는 위치와 함께 사용됩니다.WP_Post
setup_postdata( $post )
the_content()
옵션 2
do_shortcode
페이지 편집기 화면 백엔드에서 텍스트 편집기 외부의 템플리트 파일에 단축 코드를 추가하는 데 사용되며 기본적으로 후크를 통해 단축 코드를 필터링합니다.
올바른 사용법은 다음과 같습니다
예 : 템플릿 파일에 갤러리 단축 코드 추가
echo do_shortcode( '[gallery]' )
편집 1
귀하의 의견에서, 나는 짧은 코드를 전혀 사용하지 않을 것입니다.
텍스트 편집기를 통해 짧은 코드를 추가하지 않고 do_shortcode
템플릿 파일을 통해 직접 추가 (하드 코드) 하려는 경우 템플릿에 함수를 추가하기 만하면됩니다.
예:
다음 단축 코드 기능이있는 경우
function footag_func( $atts ) {
return "foo = {$atts['foo']}";
}
add_shortcode( 'footag', 'footag_func' );
다음과 같은 템플릿에서 직접 함수를 호출 할 수 있습니다.
echo footag_func();
단축 코드를 구문 분석 할 필요가 없으므로이 방법이 훨씬 빠릅니다.
편집 2
솔직히 말해서 편집에서 완전히 잘못하고 있습니다. 그렇기 때문에 첫 질문을 이해할 수 없었습니다
때로는 게시물 / 페이지 / 사용자 정의 게시물 유형에 게시물 메타를 추가해야 짧은 코드 (슬라이더, 연락처 양식 등) 또는 간단한 텍스트를 추가 할 수 있습니다. 제출 된 텍스트입니다.
단축 코드가 작동하게하려면 옵션 1 .....을 사용하십시오.
사용자 정의 필드 는 텍스트 필드 가 아니며 단축 코드를 실행하는 데 사용되거나 슬라이더 또는 연락처 양식에 사용되는 것은 아닙니다. 게시물과 페이지에서 텍스트 편집기를 바꾸는 데 사용자 정의 필드를 사용해서는 안됩니다.
앞에서 언급했듯이 apply_filters('the_content', $content);
원시 게시물 내용에 서식을 적용하는 데 사용됩니다.
여기에 두 가지 선택이 있습니다
나는 당신이 당신의 구조와 당신이 달성하고자하는 것을 새롭게 새롭게 볼 것을 진지하게 권합니다. 사용자 정의 필드 는 텍스트 편집기 가 아니며 단축 코드 나 슬라이더를 실행할 수 없습니다.
내 권장 사항은 사용자 정의 위젯 또는 사용자 정의 필드와 함께 사용할 수있는 시스템을 살펴 보는 것입니다.