POST_TYPE=PAGE的WP_QUERY问题

时间:2014-01-14 作者:Jamie

我正在使用自定义查询获取页面。我需要他们都显示在头版的一页WordPress主题。在大多数情况下,我的主题都在发挥作用,一切都很好。我的代码有这个问题,它无法识别页面模板和其他自定义内容,如短代码。就我个人而言,我不知道为什么。一些短代码起作用,而另一些则不起作用。我必须进行一个查询,检查页面是否有已分配的页面模板,然后运行内容页面的模板部分。这是我的循环代码

    $page_query = new WP_Query(array(
    \'post_status\' => \'publish\',
    \'post_type\' => \'page\',
    \'order\' => \'ASC\',
    \'orderby\' => \'menu_order\',
    \'posts_per_page\' => \'-1\',
    \'paged\' => (get_query_var(\'paged\')) ? get_query_var(\'paged\') : 1
));

        if ( $page_query->have_posts() ) : while ( $page_query->have_posts() ) : $page_query->the_post(); ?>
        <?php $template = get_post_meta( get_the_ID(), \'_wp_page_template\', TRUE ); ?>
        <?php if( $template && $post->post_content != \'\' ) { ?>
                    <li id="page_<?php echo str_replace(\' \',\'_\',strtolower( get_the_title())); ?>">
                        <?php get_template_part( \'content\', \'page\' ); ?>
                    </li>
         <?php } 

        endwhile;
        endif;
        ?>
我必须用一个短代码加载我的所有内容。如果我尝试将自定义页面模板设置为页面,那么当我加载该页面时,它将为空。页面将忽略自定义模板的内容。但循环确实注意到分配了一个页面模板。

我想知道的是,是否有更好的方法将所有页面加载到首页,并使WordPress像识别普通页面一样识别所有内容。几个月来,我一直在试图想出另一种方法,但没有成功。

谢谢你的帮助。

1 个回复
SO网友:Milo

如果您的目标是为循环中的每个页面加载选定的自定义模板,那么您实际上已经非常接近了。你得到了_wp_page_template, 但是你没有对模板做任何事情,你只是加载content-page.php 对于每一个带有行的页面get_template_part( \'content\', \'page\' );.

如果你改为_wp_page_template 并将该值传递给get_template_part (减去.php 扩展),然后您将得到所描述的行为。

if ( $page_query->have_posts() ) :
    while ( $page_query->have_posts() ) :
        $page_query->the_post();
        $template = get_post_meta( get_the_ID(), \'_wp_page_template\', true );
        if( $template && $post->post_content != \'\' ) {
            get_template_part( substr( $template, 0, -4 ) );
         }
    endwhile;
endif;

结束

相关推荐

Is_Single()条件标记在查询中返回NULL

想知道为什么这对我不起作用。我只是尝试运行所有帖子和页面的循环,并将它们标记为数组中的帖子和页面。但是is_single() 条件不起作用,所有帖子显示为页面。如果我移除is_page() 它只会给我null$data = array(); $args = array( \'posts_per_page\' => \'-1\', \'post_type\' => array(\'post\', \'page\'), \'orderby\'