Php Wordpress自定义Post循环-如何不从我不知道的数组打印信息';你不需要吗?
使用插件自定义内容类型管理器创建显示位置信息的自定义帖子。 我们每周为每个地点举办一次比赛,所以我想做的是在我的自定义帖子中,我有一组复选框,所以你可以检查场地是在周一、周二还是周三……等等,然后在我的主题中,我将有一个7天的日历。如果那天选中了某个位置,那么我希望该位置的标题/链接打印在那里 我给你们这些背景知识是因为我真的不认为我的方法是正确的。基本上,我是在循环中完成的,我在一个数组中拉取所有复选框选项,如果该选项等于该特定日期的星期一,那么它将打印位置标题名称等。 我想要这个设置,这样一个非技术人员(有点像我lol)就可以添加一个新的位置并选择“friday”,例如,代码完成其余部分。 基本上我让它工作了。但有两个问题Php Wordpress自定义Post循环-如何不从我不知道的数组打印信息';你不需要吗?,php,wordpress,Php,Wordpress,使用插件自定义内容类型管理器创建显示位置信息的自定义帖子。 我们每周为每个地点举办一次比赛,所以我想做的是在我的自定义帖子中,我有一组复选框,所以你可以检查场地是在周一、周二还是周三……等等,然后在我的主题中,我将有一个7天的日历。如果那天选中了某个位置,那么我希望该位置的标题/链接打印在那里 我给你们这些背景知识是因为我真的不认为我的方法是正确的。基本上,我是在循环中完成的,我在一个数组中拉取所有复选框选项,如果该选项等于该特定日期的星期一,那么它将打印位置标题名称等。 我想要这个设置,这样一
$weekly = new WP_Query( array( 'post_type' => 'locations', 'posts_per_page' => 5 ) );
while ( $weekly->have_posts() ) : $weekly->the_post();
<div class="weekly-venue-spacer">
$day_array = get_custom_field('weekly_day:to_array');
if (in_array('3', $day_array)) {
print_custom_field('venue_display_name');
echo "<br />";
print_custom_field('city_crossroads');
}
</div>
endwhile;
wp_reset_postdata();
$weekly=新的WP\u查询(数组('post\u type'=>'位置','posts\u per\u page'=>5));
而($weekly->have_posts()):$weekly->the_post();
$day_array=获取_自定义_字段('weekly_day:to_array');
if(在数组中('3',$day\u数组)){
打印自定义字段(“场馆显示名称”);
回声“
”;
打印自定义字段(“城市十字路口”);
}
结束时;
wp_reset_postdata();
in_数组语句中的'3'仅表示“星期三”
请看这张图片:
创建空div的一个示例-通过对div应用填充很容易看到
谢谢你的阅读。任何不同方法的解决方案都会很好。我不确定我是否正确理解了您的需求,但假设我理解了,我认为您的整个方法有点错误/复杂 首先,您不需要7个循环 我注意到有一个自定义字段-因此在该自定义字段中,而不是数组中,只需存储所需的一天,然后通过检查自定义字段值即可获取 第二,为什么使用支票簿而不是列表?是否有可能在几天内发生的最终事件?因为如果每个活动都是一天的独家活动,那么使用下拉列表甚至单选按钮就更容易了 对于您的直接问题-我不知道自定义字段的值是如何构造的-但您正在打印所有这些 在阅读评论并更好地理解问题后编辑I:- 虽然仍然认为该方法有点错误,但不知道您是如何构造数据的,但我将解决眼前的问题: 代码创建空div仅仅是因为您告诉它。 在输出div之前,您正在代码中使用
WHILE
条件。
由于您的查询得到5个post,它将创建5个div(其中一些不满足下一个条件的div当然是空的)
现在,用人类的话来说,你的功能是这样工作的:
1. Get 5 post.
2. As long as I have posts (for each post), Open a div.
3. If you have Tuesday in array - print something
4. close div
5. if not finished all posts (in our case, 5) - go back to step 2.
很明显,代码也会为空事件打印空div
因此,要正确执行,只需将开始div标记移动到WHILE
条件之前
也就是说,如果不需要检查查询中是否存在事件
正确的方法是使用IF
语句,就像常规的wordpress循环一样
一般机制如下:
<?php if ($weekly->have_posts()) : ?>
//now we open a div
<?php while ( $weekly->have_posts() ) : $weekly->the_post();?>
// now we check for other conditions and print them if available.
<?php endwhile; ?>
// now we close the DIV
<?php endif; ?>
//现在我们打开一个div
//现在,我们检查其他条件并打印它们(如果可用)。
//现在,我们关闭该分区
谢谢您的回答。是的,我知道我正在以一种复杂的、不必要的方式处理它,但我正在学习。哈哈,是的,问题是对于我的自定义“位置”帖子来说,很多位置都是在多天内播放的。例如,一个地点将在周一和周六举行活动。所以我需要能够选择多天,代码将正确地放置它们。。。我会试着用GET方法来搞乱。谢谢有没有简单的例子说明我是如何根据这个值得到这些帖子的?