首页 文章

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

提问于
浏览
1

我有以下函数,我创建了它 . ) . 然后它将这些作为一个数组返回,然后我用它来填充自定义元字段中的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

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


    http://codex.wordpress.org/The_Loop

  • 0

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

    我没有创建循环,而是使用$ 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! :-)

  • 0

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

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

    我想你可能会发现在你的函数结尾添加 wp_reset_query() 将解决你的问题:)

相关问题