我将以下函数添加到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; };
答案 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)
答案 3 :(得分:0)
我喜欢你的解决方案,但我倾向于说你需要在函数中使用这样的循环时调用$post
的全局变量,因为它将它赋给该变量
function fs_model_array(){
global $post;
$models_array = array();
$loop = new WP_Query(array(
...