在单个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.phpFull code,相关部分:

global $wp_query; 
$postid = $wp_query->post->ID; 
$mix_venue = get_post_meta($postid, 'mix_venue', true); 

现在,我的问题。我希望在单个帖子页面中将$mix_venue中保存的数据与设置了$event_venue的所有其他帖子进行比较,并显示这些帖子是否匹配(即,如果用户正在查看混音,则可以看到任何即将举行的活动(实际上是任何过去的活动)都将在活动场地举行。

但是,我自学自学WordPress,我真的不完全确定从哪里开始。

+0

编辑: 测试组合后是在这里:http://djryanmcnally.flyfx.co.uk/mixes/text-mix-one/ 我想展现的SoundCloud播放器下方相关的帖子:) 你可能会注意到在mix_data.php中,我在coundcloud播放器中的时钟图标旁边回显了$ mix_url,这是我测试正确的输出结果,我只是还没有编辑过那个:) – Nunicorn

+0

**解决了它:)**对于使用此查询的其他人,我在我的loop-mixes.php中使用了一个新的查询来显示它,如下所示: http://pastebin.com/u0uGeaF0 **注意**,我只放在现在的头衔,因为我真的只是解决了它,要去格式这一切现在很好:) – Nunicorn

我看到你解决了它,但我会建议一种可重用的方法。

在你的主题functions.php把这个功能(full arguments listget_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()?

+0

谢谢!这对后来的想法会很方便:) 正如我所说,在我的主循环(对于博客页面)中有一个其他查询,我添加了一个文件来检查元字段是否设置了事件详细信息,并显示但是,详细信息,但是,在我创建的新查询中,当我包含该文件(我的原始文章中的第一个pastebin)时,没有显示,尽管明显设置了详细信息(否则查询无法找到它们!我错过了什么吗?:/ – Nunicorn

+0

你是否在查询中执行查询?如果是,请尝试使用'function'方法来检查变量:'echo'' . print_r($var, true) . ' - >';'。如果你在一个问题内部做一个问题,打开一个[new one](http://stackoverflow.com/questions/ask);) – brasofilo

+0

哦,是的,必须去外部网站看代码不好。尝试使问题独立。更简洁,我发现难以按照你给出的所有解释,上下文是好的,但是,国际海事组织,这是太多了... – brasofilo