Я создал CPT с 3 настраиваемыми полями (настраиваемые поля выполняются в плагине ACF). У меня есть шорткод, который отображает пользовательский пост в моей теме. Пока все хорошо.
Моя проблема в том, что когда у меня несколько CPT, я хочу иметь атрибут шорткода, который позволяет пользователю указать, какую пользовательскую публикацию они хотят отображать.
В настоящее время, в зависимости от того, что у меня установлено posts_per_page
, определяет, какой пост будет отображаться. Это полностью игнорирует атрибуты.
Вот что у меня есть:
// create custom post for jumbotron
function jumbotron_post_type()
{
$labels = array(
'name' => 'Jumbotrons',
'singular_name' => 'jumbotron');
$supports = array(
'title'
);
$args=array(
'labels' => $labels,
'supports' => $supports,
'public' => true
);
register_post_type('Jumbotrons', $args);
}
add_action('init', 'jumbotron_post_type');
// create shortcode for display
function show_jumbotron($atts, $content = null )
{
extract(shortcode_atts(array(
'id' => 'new-jumbo',
'per_page' => -1,
), $atts));
$args = array(
'posts_per_page' => $per_page,
'title' => $id,
'post_type' =>'Jumbotrons'
);
$results = new WP_Query($args);
while ($results->have_posts()):
$results->the_post();
ob_start(); ?>
<section class="jumbotron">
<div class="jumbotron--container">
<h1><?php the_field('jumbotron_title'); ?></h1>
<p class="info"><?php the_field('jumbotron_body'); ?></p>
<h2 class="u--text__right"><?php the_field('jumbotron_end_heading'); ?></h2>
</div>
</section>
<?php
$content = ob_get_clean();
endwhile;
wp_reset_postdata();
return $content;
};
add_shortcode('jumbotron', 'show_jumbotron');
В теме у меня есть:
<?php echo do_shortcode('[jumbotron id="Homepage Jumbotron"]');?>
Если я установлю posts_per_page
на -1, он покажет самый старый пользовательский пост. Если я установлю на 1, то он покажет самый последний.
2 наименования CPT:
- Новый Джамбо
- Домашняя страница Jumbotron
Мое намерение было бы для [jumbotron title="Homepage Jumbotron"]
отобразить правильный пользовательский пост на основе введенного заголовка с значением по умолчанию "New Jumbo".