如何修复此 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 以使其不允许像“&”这样的特殊字符?