将%1帖子的内容插入到具有模板层次结构的另一个帖子中

时间:2018-11-09 作者:Daveh0

我有一个页面模板,用于各种广告活动的登录页。该模板使用自定义字段处理页面中的标题和其他较短内容。但是,该模板包含一整节常见问题解答。在许多情况下,登录页上的FAQ是相同的,但如果需要,要求能够在该空间中使用不同的FAQ集(或完全不同的结构化/格式化内容)。我在模板中构建了一些逻辑,可以获取the_content ,并将其添加到the_content 登录页本身的。在这里,我试图添加一些与WP的模板层次结构类似的附加逻辑…\'如果您找到一篇名为this的帖子,请使用它;如果您没有找到一篇名为that的帖子,请使用它;如果您没有找到任何一篇帖子,请使用此默认设置”。

我是根据登陆页的弹头来做的。所以如果登录页的slug是holiday1 还有一个帖子landing-faq-holiay1, 它将被插入到登录页中。如果不是,则默认的贴子landing-faq 将插入。

我正在使用以下代码插入\\u内容:

global $post;
$post_slug=$post->post_name;

$faq_id = get_page_by_path( $post_slug, OBJECT, \'land\' )->ID;

$query = new WP_query( array(\'page_id\' => $faq_id) );

if ( $query->have_posts() ) :
    while ( $query->have_posts() ) : $query->the_post();
        $content = apply_filters(\'the_content\', get_the_content());
        ?>
        <div class="content">
            <?php echo $content; ?>
        </div>
        <?php
    endwhile;
endif;
这一切都很好用(为了简单起见,我省略了条件逻辑以返回默认的FAQ帖子),但我逐渐意识到get_page_by_path() 返回整个Post对象。。。包括…在内post_content.

在这种情况下,而不是单独运行WP_query 我可以这样做吗:

$faq_post = get_page_by_path( $post_slug, OBJECT, \'land\' );
$content = $faq_post->post_content;
??

我知道get_template_part() 内置了这个,但在本例中的“部分”必须是一篇文章,客户端可以使用可视化页面生成器插件像编辑其他内容一样编辑该文章。

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

get_page_by_path() 成功后将返回一个post对象或数组,而不是post ID。

$faq_post = get_page_by_path( $post_slug, OBJECT, \'land\' );  // object
$faq_post = get_page_by_path( $post_slug, ARRAY_A, \'land\' ); // array
所以没有必要定制new WP_Query 打电话,您的以下代码正常:

$faq_post = get_page_by_path( $post_slug, OBJECT, \'land\' );
$content = $faq_post->post_content;
然而,如果我正确理解你$post_slug 应为:

$post_slug = \'landing-faq-\' . $post->post_name;
检查一下$faq_post 不是null (表示故障):

$content = $faq_post ? $faq_post->post_content : \'\';
执行自定义SQL查询来搜索带有该段代码的帖子可能会更快:

global $wpdb;

$row = $wpdb->get_row( $wpdb->prepare( "
    SELECT ID, post_content FROM {$wpdb->posts}
    WHERE post_name = %s AND post_type = \'land\'
", $post_slug ) );

if ( $row ) {
    $content = $row->post_content;

    // If you need to apply all filters to the content.
    $content = apply_filters( \'the_content\', $content );
    $content = str_replace( \']]>\', \']]&gt;\', $content );
} else {
    // Here you can grab the content of the default post.
}

结束

相关推荐

Loop by category and meta_key

我正在尝试为category.php 其中它基于当前类别和元键。但循环坚持显示其他类别的帖子global $taxonomy, $term; $cats = get_the_category(); $newQuery = new WP_Query( array( \'cat\' => $cats[0]->term_id, \'meta_key\' => \'p