gpt4 book ai didi

wordpress - 如何在自定义 WordPress 元框中重置查询

转载 作者:行者123 更新时间:2023-12-02 23:03:43 25 4
gpt4 key购买 nike

我正在开发这个 WordPress 插件,但我遇到了一个无法重置的查询。在以下函数中:

function WPSM_artists_autocomplete(){

$response = array();

query_posts('post_type=artist&posts_per_page=-1');

if (have_posts()) : while (have_posts()) : the_post();
$image_id = get_post_thumbnail_id();
$image_url = wp_get_attachment_image_src($image_id,'artist-icon');
$image_url = $image_url[0];

$response[] = array( get_the_ID() , get_the_title() , null, '<img src="'.$image_url.'" />'. get_the_title());
endwhile; endif;

wp_reset_query();

// Write JSON file
$output = json_encode($response);
$data = WPSM_CACHE_DIR."/data.json";
$fh = fopen($data, 'w') or die("can't open file");
fwrite($fh, $output);
fclose($fh);

// Return JSON url
echo WPSM_CACHE_URL."/data.json";
}

我使用 query_posts 来填充元框。但是 wp_reset_query();似乎无法正常工作。这会影响所有其他元框和帖子相关选项。全局 $post 变量设置为此查询的最新值,而不是帖子编辑页面的默认值。

我很想听听如何解决这个插件。可以利用一切让我朝着正确的方向前进。提前致谢!

干杯,

罗尼

最佳答案

我今天遇到了这个问题并找到了解决办法。

在开始新循环之前,您需要存储原始的 $post ,然后在函数结束时,您需要将其设置回来。

在执行函数之前,将 $post 分配给临时变量。

$original_query = $wp_query;

然后在函数结束时将其设置回来。

   $wp_query = $original_query;
wp_reset_postdata();

不确定上述内容是否适用于您的情况,因为我使用的是自定义查询。

我已在下面发布了我的代码,以便您查看。

            global $wpdb;
global $post;
$originalpost = $post;

$querydetails = "
SELECT *
FROM $wpdb->posts
WHERE $wpdb->posts.post_type = 'projects'
AND $wpdb->posts.post_status = 'publish'
ORDER BY $wpdb->posts.post_date DESC
";

$pageposts = $wpdb->get_results($querydetails, OBJECT);

if ($pageposts) {
foreach ($pageposts as $post) {
setup_postdata($post);

$postID = get_the_ID();
echo '<option value="';
echo $postID . '"';
foreach ($meta as $m) {
if ($postID == $m) echo ' selected="selected" ';
}
echo '>';
echo the_title();
echo '</option>';
}
}

echo "</select>";
$this->show_field_end($field, $meta);
$post = $originalpost;

关于wordpress - 如何在自定义 WordPress 元框中重置查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4452599/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com