wp_reset_postdata() 不恢复全局 $post 变量
wp_reset_postdata() doesn't restore the global $post variable
我正在使用 WP_Query 从自定义 post 类型获取 posts 以在元数据框中使用结果。一切都适用于我的查询。但是在这个查询之后我无法从数据库中获取其他元值。
这是我获取自定义字段值的辅助函数:
function my_page_get_custom_field( $value ) {
global $post;
$custom_field = get_post_meta( $post->ID, $value, true );
if ( !empty( $custom_field ) )
return is_array( $custom_field ) ? stripslashes_deep( $custom_field ) : stripslashes( wp_kses_decode_entities( $custom_field ) );
return false;
}
这是我的查询:
$sliderArgs = array(
'posts_per_page' => -1,
'post_type' => 'slider',
);
$slider = new WP_Query($sliderArgs);
if ($slider->have_posts()) {
?>
<select name="slider" id="slider">
$selectedSlide = my_page_get_custom_field('slider');
while($slider->have_posts()){
$slider->the_post();
$slideID = get_the_ID();
?><option value="<?php echo $slideID; ?>" <?php selected($selectedSlide, $slideID, true); ?>><?php the_title(); ?></option><?php
}
wp_reset_postdata(); ?>
</select>
}
这是我的另一个自定义字段,returns 为空(数据库中有一个值,当我尝试更改它时效果很好,但没有显示在管理员的输入值中):
<input type="text" name="meta_title" id="meta_title" value="<?php echo my_page_get_custom_field('meta_title'); ?>">
好的,我解决了。
我用 get_posts 而不是 WP_Query。这对我帮助很大:https://core.trac.wordpress.org/ticket/18408#comment:5
我正在使用 WP_Query 从自定义 post 类型获取 posts 以在元数据框中使用结果。一切都适用于我的查询。但是在这个查询之后我无法从数据库中获取其他元值。
这是我获取自定义字段值的辅助函数:
function my_page_get_custom_field( $value ) {
global $post;
$custom_field = get_post_meta( $post->ID, $value, true );
if ( !empty( $custom_field ) )
return is_array( $custom_field ) ? stripslashes_deep( $custom_field ) : stripslashes( wp_kses_decode_entities( $custom_field ) );
return false;
}
这是我的查询:
$sliderArgs = array(
'posts_per_page' => -1,
'post_type' => 'slider',
);
$slider = new WP_Query($sliderArgs);
if ($slider->have_posts()) {
?>
<select name="slider" id="slider">
$selectedSlide = my_page_get_custom_field('slider');
while($slider->have_posts()){
$slider->the_post();
$slideID = get_the_ID();
?><option value="<?php echo $slideID; ?>" <?php selected($selectedSlide, $slideID, true); ?>><?php the_title(); ?></option><?php
}
wp_reset_postdata(); ?>
</select>
}
这是我的另一个自定义字段,returns 为空(数据库中有一个值,当我尝试更改它时效果很好,但没有显示在管理员的输入值中):
<input type="text" name="meta_title" id="meta_title" value="<?php echo my_page_get_custom_field('meta_title'); ?>">
好的,我解决了。
我用 get_posts 而不是 WP_Query。这对我帮助很大:https://core.trac.wordpress.org/ticket/18408#comment:5