2013-08-11 5 views
0

У меня есть пользовательский тип сообщения, называемый активностью, и количество стандартных страниц, которые являются разными странами. В каждой стране имеется ряд мероприятий. Пользователю необходимо добавить ряд различных действий, а затем выбрать, в какой стране доступны все виды деятельности.Wordpress Сообщения на странице, если выполнено условие

Используя списки страниц, у меня есть раскрывающийся список, в котором перечислены все страницы в типе пользовательских сообщений. Пользователь может добавить новое действие, добавить контент и выбрать, к какой стране (странице) относится эта деятельность. На этой конкретной странице страны в интерфейсе перечислены доступные виды деятельности.

Для каждой страны я хочу показать только 3 мероприятия. Я делаю стандартный цикл получения всех пользовательских типов сообщений для действий. Я должен проверить, соответствует ли postid страницы, выбранной в выпадающем меню, текущей странице, и если она показывает активность. Использование стандартной posts_per_page не работает, так как она захватывает только три сообщения, а затем выполняет условный оператор на тех, кто видит, совпадает ли текущий идентификатор.

Я предполагаю, что я хочу, чтобы страница posts_per_page применима только к действиям, которые действительно соответствуют критериям того, что идентификатор страны страны совпадает с идентификатором страны, выбранной в действии.

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(); 

Любые идеи были бы фантастическими, поскольку у меня есть несколько пользовательских типов сообщений, которые делают подобную вещь!

Спасибо заранее,

Rich

ответ

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, если это не то значение, которое оно использует.

+0

Это именно то, что я был после, спасибо вам большое! Я нашел, что мне нужно было немного изменить его, и обернуть массив внутри meta_query в массиве, чтобы он работал. – Rich

Смежные вопросы