我正在使用自定义查询获取页面。我需要他们都显示在头版的一页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像识别普通页面一样识别所有内容。几个月来,我一直在试图想出另一种方法,但没有成功。
谢谢你的帮助。
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;