我尝试运行两次查询,一次在模板部分(page.php)中,一次在主题函数中。php。我这样做是因为我需要将一些样式输出到主题的标题,因为我不允许使用硬编码的内联样式。
这是我的主要问题:
if (have_posts()) {
while (have_posts()) {
the_post();
// Do some stuff, like the_permalink();
}
}
现在,我将样式输出到标题的方式如下:
function header_styles(){
if (have_posts()) {
global $post;?>
<style><?php
while (have_posts()){
the_post();
echo " .background-".$post->ID." { background-image: url(\'".get_the_post_thumbnail_url( $post->ID,\'thumbnail\' )."\');}";
print_r($post);
}
wp_reset_postdata();?>
</style><?php
}
}
add_action(\'wp_head\',\'header_styles\');
这在主页和归档页面上运行良好。但现在我被困在访问自定义查询中。如果我在第一个代码中将查询分配给变量并在自定义模板文件中使用它(例如
My Page
它是使用
custom-page.php
), 我无法再访问该查询。例如,在中使用此代码
custom-page.php
:
$custom_query = new WP_Query($args);
if ($custom_query->have_posts()) {
while ($custom_query->have_posts()) {
$custom_query->the_post();
// Do some stuff, like the_permalink();
}
}
现在我可以输出自定义查询,但无法在中访问它
functions.php
.
有没有可能解决这个问题?
最合适的回答,由SO网友:Howdy_McGee 整理而成
您可以缓存该页面加载的结果。它应该会成功的header.php
, 缓存对象,并在index.php
您可以检查可用性。
收割台
$custom_query = new WP_Query( $args );
if( $custom_query->have_posts() ) {
// Cache Query before loop
wp_cache_add( \'custom_query\', $custom_query );
while( $custom_query->have_posts() ) {
$custom_query->the_post();
// Do some stuff, like the_permalink();
}
wp_reset_postdata();
}
其他文件
$custom_query = wp_cache_get( \'custom_query\', $custom_query );
if( ! empty( $custom_query ) && $custom_query->have_posts() ) {
while( $custom_query->have_posts() ) {
$custom_query->the_post();
// Do some stuff, like the_permalink();
}
wp_reset_postdata();
}