2015-01-20 4 views
0

Im работает над сайтом и создаёт собственный тип сообщения. В этом настраиваемом типе сообщений я добавил мета-поле, в котором вы можете выбрать номер из 1-го желоба 16. Эти номера соответствуют определенным позициям на моей домашней странице. Но теперь появляется моя проблема. Как я могу запросить этот пост в этих конкретных положениях, не повторяя себя.Запрос wordpress на основе метазначения

Так, например ...

здесь пост с мета значением 1 здесь пост с мета значением 2 здесь пост с мета значением 3

т.д ..

Надежда кто-то может помочь мне немного

ответ

0

Существует несколько способов решить эту проблему в зависимости от сложности вашей логики компоновки. Если вы в основном просто нужно перебрать 16 сообщений в порядке, вы можете использовать параметр orderby в запросе, чтобы сортировать сообщения:

$args = array(
       'post-type' => 'YOUR_POST_TYPE', 
       'orderby' => 'meta_value_num', 
       'meta_key' => 'YOUR_METAFIELD_SLUG' 
     ); 

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

// loop goes here 

Если вам нужно что-то более сложное, вы могли бы быть в состоянии избежать повторения запросов путем запроса один раз и затем использования условных выражений для проверки значения мета. Например, с запросом из приведенного выше примера ...

// Position 1 on your page 

<div class="position-1"> 

<?php 
while($customposts->have_posts()): $customposts->the_post(); 
$meta_value = get_post_meta(get_the_ID(), 'YOUR_METAFIELD_SLUG', true); 

// Only print something here if the meta value is what we want 
if($meta_value == 1) : 
    the_title(); 
    the_content(); 
endif; 

// Reset the loop 
$customposts->rewind_posts(); ?> 

</div> 

// Position 2 on your page 

<div class="position-2"> 
<?php 
while($customposts->have_posts()): $customposts->the_post(); 
$meta_value = get_post_meta(get_the_ID(), 'YOUR_METAFIELD_SLUG', true); 
if($meta_value == 2) : 
    the_title(); 
    the_content(); 
endif; 

// Reset the loop again 
$customposts->rewind_posts(); ?> 

.... и так далее.

Вы можете найти эти полезные:

http://codex.wordpress.org/Function_Reference/get_post_meta

http://codex.wordpress.org/Class_Reference/WP_Query

+0

Спасибо за этот быстрый ответ. Я обязательно использую ваш второй пример и использую шаблонную часть для названия и контента, чтобы работать немного СУХОЙ. Еще раз спасибо – Toasty

+0

пост-тип должен быть post_type. Еще спасибо – Toasty

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