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

Posted

技术标签:

【中文标题】如何修复此 WordPress 功能使其不返回 404 页面?【英文标题】:How to fix this WordPress function so that it doesn't return a 404 page? 【发布时间】:2011-03-06 18:53:42 【问题描述】:

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

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

现在,这似乎在仪表板中运行良好 - 下拉列表已按预期填充。但是,当我保存时,该帖子不会显示在“编辑”列表中。同样在网站上,当此功能激活时,所有页面都输出为 404 错误页面。

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


函数 fs_model_array() 
$models_array = 数组();
$loop = 新的 WP_Query(数组(
    'post_type' => 'fsmodel',
    'posts_per_page' => -1,
    'orderby' => '标题',
    '订单' => 'ASC',
    'post_status' => '发布'
    ));
while ( $loop->have_posts() ) : $loop->the_post();
$models_array[] = get_the_title();
结束;
返回 $models_array;
;

【问题讨论】:

【参考方案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 作为 $model_db) 
    $models_array[] = $model_db->post_title;

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

【讨论】:

【参考方案2】:

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

【讨论】:

感谢您的意见。不幸的是,我之前尝试过,但没有帮助。【参考方案3】:

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


http://codex.wordpress.org/The_Loop

【讨论】:

感谢您的帮助,霞。我认为是这样,但我不清楚如何在受functions.php影响的循环之外运行它。不过,我的答案中的数据库查询解决了我的问题。【参考方案4】:

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

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

【讨论】:

以上是关于如何修复此 WordPress 功能使其不返回 404 页面?的主要内容,如果未能解决你的问题,请参考以下文章

更改此条件,使其不总是评估为“真”

如何验证 UITextView 以使其不允许像“&”这样的特殊字符?

声纳 更改此条件,使其不总是评估为“真”。假阳性

Plotly:如何设置绘图图形的样式,使其不显示缺失日期的间隙?

处理空条件(在声纳中更改此条件,使其不总是评估为“假”)

在片段中调用 getActivity() 以使其不返回 null 的最佳做法是啥? [复制]