我有以下代码:
主页.php
<?php
$query = new WP_Query(
array(
'order' => 'ASC',
'orderby' => 'menu_order',
'post_type' => 'work'
)
);
?>
<?php get_template_part('loop', 'feed-work'); ?>
<?php wp_reset_query(); ?>
循环馈送工作.php
<?php if($query->have_posts()) : ?>
<?php while($query->have_posts()) : $query->the_post(); ?>
<?php the_title(); ?>
<?php endwhile; ?>
<?php endif; ?>
但当我查看我的主页时,我会收到以下错误:
致命错误:未捕获错误:调用上的成员函数have_posts((******/循环提要work.php中为null:1
这可能是因为查询在不同的模板文件中吗?
这正是问题所在。不幸的是,get_template_part不像include那样工作,因此在包含的文件中时会丢失范围变量。在保持相同逻辑的同时,该问题的解决方案是更改get_template_part并使用:
// $templates[] = "{$slug}-{$name}.php"; // This is how wp builds the slug iside get_template_part
include locate_template('loop-feed-work.php');