Отображать пользовательскую публикацию на домашней странице на основе выбора метабокса
Я пытаюсь отобразить сообщение на своей домашней странице на основе выбора. Я имею в виду, что в бэкэнде у меня есть пользовательское сообщение, в котором есть метабокс с надписью "Назначить на дом" с выпадающим списком, в котором есть выбор "Да" или "Нет". То, что я пытаюсь сделать, - это когда пользовательское сообщение имеет выбор "Да", оно будет отображаться на домашней странице. Когда выбор говорит "Нет", он не будет отображаться.
Приведенный ниже код - это то, что я пытаюсь использовать для вызова своего поста. тип записи и мета-ключ оба верны, но когда я пытаюсь отобразить свой пост, я получаю массив.
Домашняя страница
<?php function posts_draft($meta_values) {
$args_draft = array(
'numberposts' => 3,
'post_type' => 'fe', // set you custom post type
'meta_key' => '_cmb_homeDisplay',
'meta_value' => $meta_values,
);
$my_posts_draft = get_posts( $args_draft );
$posts_draft = get_posts($my_posts_draft);
return $posts_draft;
}
{
echo posts_draft('yes');}
?>
<?php if ( $fleet->have_posts() ) : while ( $fleet->have_posts() ) : $fleet->the_post(); ?>
<div class="fleetBox">
<img src="<?php echo get_post_meta($post->ID, "_cmb_limoThumbnail", true); ?>" />
<ul>
<li><h3><?php the_title( '' ); ?></h3></li>
<li><h4>Luxury <?php echo get_post_meta($post->ID, '_cmb_limo_select', true); ?></h4></li>
<li><a href="<?php echo get_permalink(); ?>">More Details</a></li>
</ul>
</div>
<?php endwhile; endif; ?>
Я знаю, что это может быть не так полезно, потому что это большой объем кода, но это то, что я использую для отображения моего выпадающего списка. Этот код представляет собой небольшой фрагмент в полном пользовательском типе записи, который я использую.
Тип записи, используемый для этого фрагмента, - fe , а мета-ключ, который присваивается всему моему идентификатору префикса, - cmb
array(
'name' => 'Display Home',
'desc' => 'Select an option',
'id' => $prefix . 'homeDisplay',
'type' => 'select',
'options' => array(
'custom' => __( 'Select...', 'cmb' ),
'standard' => __( 'Yes', 'cmb' ),
'none' => __( 'No', 'cmb' ),
),
'default' => 'custom',
),
2 answers
Похоже, вы используете пользовательские мета-поля и поля репозитория github, который является потрясающей библиотекой. Я думаю, что первое, что вам нужно сделать, - это новый WP_Query. Ниже приведен пример этого в действии. Единственное отличие состоит в том, что в моем примере я установил флажок "Назначить домашней странице" для пользовательского типа публикации.
<?php
$args = array(
'post_type' => 'testimonial',
'meta_key' => '_wla_homepage_slider_checkbox',
'meta_value' => 'on',
'post_per_page' => 100, /* add a reasonable max # rows */
'no_found_rows' => true, /* don't generate a count as part of query, unless you need it. */
);
$testimonials = new WP_Query( $args );
?>
Оттуда вы можете запустить свой пользовательский цикл и извлекать метаданные по мере необходимости.
<?php
$args = array(
'post_type' => 'product', /* your Custom post slag */
'meta_key' => '_wla_homepage_slider_checkbox',
'meta_value' => 'on',
'posts_per_page' => 15,
'no_found_rows' => true
);
$query= new WP_Query( $args );
?>