0

我有一个名为活动的自定义帖子类型和许多不同国家的标准页面。每个国家都有许多可用的活动。用户需要添加一系列不同的活动,然后选择每个活动在哪个国家/地区可用。

使用列表页面,我有一个下拉列表,列出了活动自定义帖子类型中的所有页面。用户可以添加新活动、添加内容并选择该活动涉及的国家(页面)。在前端的特定国家页面上,列出了可用的活动。

对于每个国家/地区,我只想展示 3 项活动。我执行标准循环获取活动的所有自定义帖子类型。我必须检查下拉菜单中选择的页面的 postid 是否与当前页面匹配,以及它是否显示活动。使用标准的 posts_per_page 不起作用,因为它只抓取三个帖子,然后对这些帖子执行条件语句以查看是否有任何与当前 ID 匹配。

我想我想要发生的事情是让 posts_per_page 仅适用于实际符合条件的活动,即国家页面 id 与活动中选择的国家/地区的 id 相匹配。

global $post;                                                    
$postid = get_the_ID();

$args = array( 'post_type' => 'activities', 'orderby' => 'date', 'order' =>'ASC','posts_per_page' => 3);

$loop = new WP_Query( $args );
while ( $loop->have_posts() ) : $loop->the_post();

$country = rwmb_meta( 'rw_activities_pages' ); 
// this is the drop down list of pages. It gets the ID of the country page chosen
$currentID = get_post($country);
$currentTitle = $currentID->post_title;


if ($country == $postid){
// if the activity country id matches the current page show the info
    echo get_the_title();
    echo $currentTitle;
    echo the_content(); 
}   
endwhile;
wp_reset_query();

任何想法都会很棒,因为我有几个自定义帖子类型可以做类似的事情!

提前致谢,

富有的

4

1 回答 1

0

您要做的是使用 meta_query 过滤查询本身中的帖子。

$args = array( 
  'post_type' => 'activities', 
  'meta_query' => array(
                         'key' => 'rw_activities_page',
                         'value'=> $postid,
                         'compare'=>'='
                         ),
  'orderby' => 'date', 
  'order' =>'ASC',
  'posts_per_page' => 3);

如果 meta_key 不完全是它使用的值,您可能需要调整它。

于 2013-08-11T05:01:44.090 回答