在单个WordPress帖子页面上显示基于自定义元字段的相关帖子?
我目前正在为我的DJ朋友的网站上传他的混音到Soundcloud进行分享,他还将使用他的网站发布他的混音(通过Soundcloud)并发布活动。在单个WordPress帖子页面上显示基于自定义元字段的相关帖子?
为了处理事件的事件方面,而不是使用自定义帖子类型,我只是将我自己的元字段添加到标准帖子屏幕,并设置帖子以显示事件信息(如果已设置),并且如果不是,则正常显示帖子。 Full code,相关部分:
global $wp_query;
$postid = $wp_query->post->ID;
$event_venue = get_post_meta($postid, 'event_venue', true);
除此之外,处理他的混音,我已经建立了一个自定义后类型(一般,使他更容易分辨,因为他不是一个混频器的可怕techsavvy外和转盘)以及自定义meta字段,以允许他添加录制混音的位置(场地方式)和他的soundcloud URL(用于自动将帖子内容嵌入到帖子中,而不是使用插件)。我创建了一个自定义循环和single-mixes.php
页面来处理数据的显示,这基本上是原始循环(重命名为loop-mixes.php
,所以我知道是什么),但包含文件mix_data.php
。 Full code,相关部分:
global $wp_query;
$postid = $wp_query->post->ID;
$mix_venue = get_post_meta($postid, 'mix_venue', true);
现在,我的问题。我希望在单个帖子页面中将$mix_venue
中保存的数据与设置了$event_venue
的所有其他帖子进行比较,并显示这些帖子是否匹配(即,如果用户正在查看混音,则可以看到任何即将举行的活动(实际上是任何过去的活动)都将在活动场地举行。
但是,我自学自学WordPress,我真的不完全确定从哪里开始。
我看到你解决了它,但我会建议一种可重用的方法。
在你的主题functions.php
把这个功能(full arguments list为get_posts()
):
function print_event_venues($mix_venue)
{
$args = array(
'numberposts' => -1,
'post_type' => 'post',
'post_status' => 'publish',
'meta_key' => 'event_venue',
'meta_value' => $mix_venue
);
$posts = get_posts($args);
// DO NOTHING
if(!$posts)
return;
foreach($posts as $post)
{
// DO YOUR HTML
echo $post->post_title;
}
}
然后,在任何模板,只需调用它:print_event_venues($the_mix_venue);
。
有用的信息:When should you use WP_Query vs query_posts() vs get_posts()?。
谢谢!这对后来的想法会很方便:) 正如我所说,在我的主循环(对于博客页面)中有一个其他查询,我添加了一个文件来检查元字段是否设置了事件详细信息,并显示但是,详细信息,但是,在我创建的新查询中,当我包含该文件(我的原始文章中的第一个pastebin)时,没有显示,尽管明显设置了详细信息(否则查询无法找到它们!我错过了什么吗?:/ – Nunicorn
你是否在查询中执行查询?如果是,请尝试使用'function'方法来检查变量:'echo'' . print_r($var, true) . ' - >';'。如果你在一个问题内部做一个问题,打开一个[new one](http://stackoverflow.com/questions/ask);) – brasofilo
哦,是的,必须去外部网站看代码不好。尝试使问题独立。更简洁,我发现难以按照你给出的所有解释,上下文是好的,但是,国际海事组织,这是太多了... – brasofilo
编辑: 测试组合后是在这里:http://djryanmcnally.flyfx.co.uk/mixes/text-mix-one/ 我想展现的SoundCloud播放器下方相关的帖子:) 你可能会注意到在mix_data.php中,我在coundcloud播放器中的时钟图标旁边回显了$ mix_url,这是我测试正确的输出结果,我只是还没有编辑过那个:) – Nunicorn
**解决了它:)**对于使用此查询的其他人,我在我的loop-mixes.php中使用了一个新的查询来显示它,如下所示: http://pastebin.com/u0uGeaF0 **注意**,我只放在现在的头衔,因为我真的只是解决了它,要去格式这一切现在很好:) – Nunicorn