0

我创建了一个查询来调用当前父页面的所有子页面。这很好用,但是每个子页面都有一个自定义模板。我不知道如何添加自定义查询参数来说明模板。目前我为每个子页面查询 the_content,但这并没有考虑到模板。

谁能帮我修改查询?

<?php $children = get_pages( 
    array(
        'sort_column' => 'menu_order',
        'sort_order' => 'ASC',
        'hierarchical' => 0,
        'parent' => $post->ID,
        'post_type' => 'projects',
        'meta_query' => array(
            array(
                'key' => '_wp_page_template',
                'value' => 'template-city.php', // template name as stored in the dB
            )
        )
    ));

foreach( $children as $post ) { 
        setup_postdata( $post ); ?>
    <div class="section-container">
        <?php the_content(); ?>
    </div>
<?php } ?>
4

2 回答 2

1

我认为get_pages函数不使用meta_query,你需要做这样的事情:

$children = get_pages( 
    array(
        'sort_column' => 'menu_order',
        'sort_order' => 'ASC',
        'hierarchical' => 0,
        'parent' => $post->ID,
        'post_type' => 'projects',
        'meta_key' => '_wp_page_template',
        'meta_value' => 'template-city.php',
    ));

或使用get_posts使用meta_query.

于 2013-07-07T06:14:02.123 回答
1

您可以使用 get_post_meta !

使用 template_redirect 操作:

function my_page_template_redirect()
{
    global $post;
    if(get_post_type($post) == 'projects' )
    {
         $tpl = get_post_meta($post->ID, '_wp_page_template');
         if ($tpl) {
             include( get_template_directory() . $tpl );
             exit();
         }
    }
}    
add_action( 'template_redirect', 'my_page_template_redirect' );
于 2013-07-07T14:15:49.403 回答