Wordpress - захватить элемент по категории в запросе типа сообщения - PullRequest
0 голосов
/ 03 ноября 2011

Я установил пользовательский тип записи в Wordpress. Это раздел, где клиент может загружать документы в формате PDF. Документы разделены на две категории - «Загружаемые формы» и «Меню»; имя настраиваемого поля для категории «document_category»

Я пытаюсь выполнить запрос и отображать только «Загружаемые формы» на странице. Вот код, который я обычно использую - я надеюсь, что кто-нибудь может помочь мне добавить то, что мне нужно, чтобы это работало?

<?php       
$args = array('post_type' => 'prep_forms', 'posts_per_page' => -1);
// The Query
$the_query = new WP_Query( $args );
// The Loop
$i = 0;
while ( $the_query->have_posts() ) : $the_query->the_post();
?>
<li><a href="<?php echo get_field('document_pdf_file'); ?>"><?php the_title(); ?></a></li>
<?php
$i++;
endwhile;
// Reset Post Data
wp_reset_postdata();
?>

Спасибо.

Ответы [ 3 ]

0 голосов
/ 04 ноября 2011
<?php       
$args = array('post_type' => 'prep_forms', 'posts_per_page' => -1);
// The Query
$the_query = new WP_Query( $args );
// The Loop
$i = 0;
while ( $the_query->have_posts() ) : 
    $the_query->the_post();
    // Get all Advanced custom fields
    $my_custom_fields = get_fields(get_the_ID());
    // Does document_category field exists and is it equal with 'Downloadable Forms'?
    if(isset($my_custom_fields['document_category']) && $my_custom_fields['document_category'] == 'Downloadable Forms'):
?>
<li><a href="<?php echo get_field('document_pdf_file'); ?>"><?php the_title(); ?></a></li>
<?php
    endif;
$i++;
endwhile;
// Reset Post Data
wp_reset_postdata();
?>

Я использовал функцию get_fields($post_id = false) плагина Advanced Custom Fields, которая возвращает массив всех пользовательских полей сообщений и затем фильтрует его в соответствии с вашими потребностями.

Надеюсь, я помог

0 голосов
/ 04 ноября 2011

Почему бы вам не упростить и не установить запрос на основе данных настраиваемого поля?

<?php 
$count = 1;
$args = array(
  'post_type' => 'any',
  'posts_per_page' => 4,
  'meta_key' => 'display', 
  'meta_value' => 'true'
);

$query = new WP_Query();$query->query($args); 
while ($query->have_posts()) : $query->the_post();                      
$do_not_duplicate[] = $post->ID;
?>
    <!-- query content -->
    <h2><a href="<?php the_permalink() ?>" rel="bookmark" title="<?php printf( esc_attr__( 'Permalink to %s', 'advanced' ), the_title_attribute( 'echo=0' ) ); ?>" ></h2>
    <?php the_excerpt() ;?>
    <!-- query content -->
<?php $count++; endwhile; wp_reset_query(); ?>

Таким образом, любое сообщение с ключом настраиваемого поля отображает и значением настраиваемого поля true будет показано по вашему запросу.

0 голосов
/ 03 ноября 2011

Ну, вы можете использовать is_category (); внутри цикла и отображать только те сообщения, например (используя ваш код):

<?php       
$args = array('post_type' => 'prep_forms', 'posts_per_page' => -1);
// The Query
$the_query = new WP_Query( $args );
// The Loop
$i = 0;
while ( $the_query->have_posts() ) : $the_query->the_post();

if(is_category('Sownloadable Forms')){  // here the condition

?>
<li><a href="<?php echo get_field('document_pdf_file'); ?>"><?php the_title(); ?></a></li>
<?php
$i++;
} // here ends the IF statment
endwhile;
// Reset Post Data
wp_reset_postdata();
?>

Еще лучше: http://codex.wordpress.org/Function_Reference/is_category

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...