如何修复此WordPress功能,使其不返回404页面?

时间:2010-06-22 11:53:59

标签: php wordpress function

我将以下函数添加到WordPress中的functions.php文件中。这个想法是它收集了'fsmodel'帖子的所有标题(我创建的自定义帖子类型)。然后它将这些作为一个数组返回,然后我用它来填充自定义元字段中的 select 标记,以获得第二个自定义帖子类型。

基本上,'fsmodel'会有一个带有船模型的帖子,'fsboat'帖子类型会有一个下拉列表,其中包含每个模型的名称可供选择。

现在,这似乎在仪表板中正常工作 - 下拉列表按预期填充。但是,当我保存时,帖子不会显示在“编辑”列表中。同样在网站上,当此功能处于活动状态时,所有页面都将作为404错误页面输出。

我确定问题出在以下代码中 - 有没有人知道我可能做错了什么?


function fs_model_array() {
$models_array = array();
$loop = new WP_Query(array(
    'post_type' => 'fsmodel',
    'posts_per_page' => -1,
    'orderby' => 'title',
    'order' => 'ASC',
    'post_status' => 'publish'
    ));
while ( $loop->have_posts() ) : $loop->the_post();
$models_array[] = get_the_title();
endwhile;
return $models_array;
};

4 个答案:

答案 0 :(得分:1)

好的,我想出了一个解决方案(我希望 - 它现在正在坚持)。

我没有创建循环,而是使用$ wpdb-> get_results在数据库中搜索具有自定义帖子类型的WHERE过滤器的列。

然后运行数组构建器:

$models_array = array();
$model_db = $wpdb->get_results("SELECT post_title FROM $wpdb->posts WHERE post_type='fsmodel' AND post_status = 'publish'");

foreach ($model_db as $model_db) {
    $models_array[] = $model_db->post_title;
}

再次感谢您的时间,hsatterwhite! : - )

答案 1 :(得分:0)

我认为您可能会发现在函数末尾添加wp_reset_query()将解决您的问题:)

答案 2 :(得分:0)

问题是你在一个陌生的地方或一个已经循环的地方调用wordpress循环了吗?


http://codex.wordpress.org/The_Loop

答案 3 :(得分:0)

我喜欢你的解决方案,但我倾向于说你需要在函数中使用这样的循环时调用$post的全局变量,因为它将它赋给该变量

function fs_model_array(){
  global $post;
  $models_array = array();
  $loop = new WP_Query(array(
    ...