ACF 관계 필드가 포함된 WP 게시물을 게시하는 방법에 대해 어떤 아이디어가 있을까요?
iFrame이 최선의 방법일까요?
ACF 관계 필드가 포함된 WP 게시물을 게시하는 방법에 대해 어떤 아이디어가 있을까요?
iFrame이 최선의 방법일까요?
Richard님,
거의 그렇지 않습니다
그리고 이 경우에도 마찬가지입니다.
여기서 필요한 부분이 무엇인지 좀 더 자세히 설명해 주시고, 지금까지 무엇을 시도해 보셨는지 알려 주실 수 있을까요?
토픽 제목에서 언급했듯이, 게시물이 Discourse로 전송되기 전에 HTML을 변경하려면 discourse_publish_format_html 필터를 사용할 수 있습니다. 또한 ACF 문서에는 ACF 관계 필드를 사용하는 방법에 대한 좋은 예시도 있습니다. 이 예시들을 discourse_publish_format_html 필터와 함께 적용해 볼 수 있습니다.
저는 Memes와 People이라는 두 개의 CPT(커스텀 포스트 타입)를 가지고 있습니다. 각각에는 meme_person이라는 이름의 ACF 관계 필드가 있습니다. 하나의 밈(meme)에는 여러 명의 관련 인물이 있을 수 있으며, 밈에는 댓글 텍스트 필드도 있습니다. 각 인물의 이름은 People 포스트의 제목입니다.
저는 Discourse에서 밈 이미지를 표시한 뒤, 댓글과 관련 인물 목록을 표시하고 싶습니다.
아래는 제 현재 시도한 코드입니다. foreach 줄이 제멋대로 쓴 추측이어서 테스트를 하지 않았습니다.
이 형식이 맞을까요?
// when publishing a post to Discourse
function rs_custom_publish_format_html( $output, $post_id ) {
$post = get_post( $post_id );
$type = get_post_type($post_id);
// if featured image is present, use it
if ( has_post_thumbnail( $post_id ) ) {
$image = "{thumbnail}<br><br>";
} else {
$image = "";
}
// if post is a meme, get the custom field information
if ( 'memes' === $type) {
$comment = get_post_meta($post->ID, '_comment', true);
$people = ''
$meme_person = get_field('meme_person');
if( $meme_person ):
foreach( $meme_person as $people ):
$title = get_the_title( $featured_post->ID );
$people .= $title ?> . ', '
<?php endforeach; ?>
</ul>
<?php endif; ?>
<?php ob_start(); ?>
<small>Originally published at: {blogurl}</small><br><br>
<?php echo $image ?>
<?php echo $comment ?><br>
<?php echo $people ?>
{excerpt}
<?php
$output = ob_get_clean();
return $output;
}
// else return
ob_start();
the_permalink( $post_id );
$output = ob_get_clean();
return $output;
}
add_filter( 'discourse_publish_format_html', 'rs_custom_publish_format_html', 10, 2 );
좀 둔한 질문이라 죄송하지만, 모든 코드를 검토해 달라는 건지 아니면 Discourse 필터 사용 부분만 봐 달라는 건지 정확히 모르겠습니다. 필터가 $output을 수정하고 템플릿 태그를 사용하여 값을 보간하도록 기대한다는 의미에서는 형식이 맞습니다. 자세한 내용은 이 주제를 참고해 주세요.
감사합니다. 해당 주제는 다음과 같이 명시되어 있습니다: “템플릿에는 다음 템플릿 태그가 사용할 수 있습니다: {excerpt}, {blogurl}, {author}, {thumbnail}, {featuredimage}”
처음 읽었을 때, 이것이 전달할 수 있는 유일한 요소인 줄 알고 iFrame에 대해 처음 질문하게 되었습니다. 다른 몇몇 스레드에서는 이제 Post ID로 다른 메타 필드를 검색할 수 있는 기능이 추가되었다고 제안하고 있었습니다. (이 내용은 아마 템플릿 커스터마이징 스레드에 언급되어야 할 것 같습니다)
해당 스레드에 대한 당신의 원래 답변은 관계 필드를 가로질러 검색할 수 있는 능력을 확인해 주었고, 제가 지금까지 무엇을 시도해 보았는지 물어보셨습니다.
업로드한 코드는 제가 현재까지 작성한 것이며, 관계 필드 검색 중 저를 막막하게 만드는 유일한 부분이 foreach 라인이라 이에 대해 통찰을 주실 수 있는지 궁금했습니다. 만약 그렇지 않다면, 다른 곳에서 검색한 후 여기 다시 올릴 것입니다.
감사합니다.
ACF 관계 필드를 확장하려는 분들을 위해, Discourse로 전송하는 CPT가 memes이고, 이 CPT에 people이라는 다른 CPT를 참조하는 객체 형태의 관계 필드 meme_person이 포함된 경우, 마침 작동한 방법을 공유합니다.
function rs_custom_publish_format_html( $output, $post_id ) {
$post = get_post( $post_id );
$type = get_post_type($post_id);
// featured image가 있으면 사용
if ( has_post_thumbnail( $post_id ) ) {
$image = "{thumbnail}<br><br>";
} else {
$image = "";
}
// 포스트가 meme이면 커스텀 필드 정보를 가져옴
if ( 'memes' === $post->post_type) {
$comment = get_post_meta($post->ID, 'comment', true);
$peopleout = ' ';
$persons = get_post_meta($post->ID, 'meme_person', true);
if( $persons ):
foreach( $persons as $person ):
$title = get_the_title($person);
$peopleout .= $title . ' ' ;
endforeach;
endif; ?>
<?php ob_start(); ?>
<small>Originally published at: {blogurl}</small><br><br>
<?php echo $image ?>
<?php echo $comment ?><br>
<?php echo $peopleout ?>
{excerpt}
<?php
$output = ob_get_clean();
return $output;
}
// 아니면 반환
ob_start();
the_permalink( $post_id );
$output = ob_get_clean();
return $output;
}
add_filter( 'discourse_publish_format_html', 'rs_custom_publish_format_html', 10, 2 );