#wordpress
#wordpress
Вопрос:
Я настроил пользовательский тип сообщения в 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();
?>
Спасибо.
Ответ №1:
<?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']) amp;amp; $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, который возвращает массив пользовательских полей всех сообщений, а затем фильтрует его в соответствии с вашими потребностями.
Надеюсь, я помог
Комментарии:
1. Снова спас меня. Спасибо, Костис.
Ответ №2:
Ну, вы можете использовать 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
Надеюсь, это поможет.
Комментарии:
1. Единственная проблема с этим — это не категория WordPress. Я настроил пользовательское поле в расширенных пользовательских полях, где пользователь выбирает категорию при загрузке PDF.
Ответ №3:
Почему бы вам не упростить и не задать запрос на основе пользовательских данных поля?
<?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 будет показано в вашем запросе.