私はwordpressを使用しており、ショートコードを使用してポスト/ページにスライダを移動する機能を提供したいと考えています。ショートコードを使用してカスタム投稿の種類と返信カルーセルを照会する
すなわち、私は次のように行われている[slider id="2"]
:
- 作成したカスタムポストタイプ「スライダー」
- ポストタイプ内で必要なすべてのフィールドを作成するために、高度なカスタムフィールドを使用します。私は今、それはこの部分である...カスタムポストタイプの
WP_Query
を実行し、HTMLスライダーを構築しようとしている別の関数を呼び出す必要がfunction landwSliderShortcode($atts = [], $content = null, $tag = '') { $atts = array_change_key_case((array)$atts, CASE_LOWER); $slider_atts = shortcode_atts([ 'id' => '1', ], $atts, $tag); return $slider_atts['id']; } function landwSliderShortcodes_init() { add_shortcode('slider', 'landwSliderShortcode'); } add_action('init', 'landwSliderShortcodes_init');
を:使用してショートを作成し
私は苦労しています。私はこれまでのところ持っている:
function getSliderData($sliderId) {
$slidercount = 0;
$args = array(
'post_type' => 'slider',
'post_status' => 'publish',
'posts_per_page' => '1',
'p' => $sliderId,
);
$sliderLoop = new WP_Query($args);
if ($sliderLoop->have_posts()) :
while ($sliderLoop->have_posts()) : $sliderLoop->the_post();
$image = get_sub_field('image');
$image_render = $image['sizes'][$image_asset_size];
$add_link = get_sub_field('add_link');
$link_type = get_sub_field('link_type');
$internal_link = get_sub_field('internal_link');
$external_link = get_sub_field('external_link');
$add_lightbox = get_sub_field('add_lightbox');
$lightboxasset = get_sub_field('lightbox_asset');
$lightboxassetcaption = get_sub_field('lightbox_caption');
$caption = get_sub_field('caption');
$sub_caption = get_sub_field('sub_caption');
?>
<div class="slider-wrap">
<?php if ($add_link) {
if ($link_type == "External") {
echo '<a class="carousel-slide-link" href="'.$external_link.'" target="_blank"></a>';
} else {
echo '<a class="carousel-slide-link" href="'.$internal_link.'"></a>';
}
}
?>
<?php if ($add_lightbox) { ?>
<a class="carousel-slide-link" data-fancybox data-src="#SliderModal<?php echo $slidercount ?>" target="_blank" href="javascript:;"></a>
<?php } ?>
<img src="<?php echo $image_render; ?>">
<!-- 6 Mar 17 added conditional to show the caption -->
<?php if (strlen($sub_caption) > 0 || strlen($caption) > 0) : ?>
<div class="post-wrap-meta">
<span><?php echo $sub_caption; ?></span>
<p class="slider-caption-text"><?php echo $caption; ?></p>
</div>
<?php endif ?>
</div>
<!-- output the modal -->
<div style="display: none;" class="standard__modal" id="SliderModal<?php echo $slidercount; ?>">
<?php echo $lightboxasset ?>
<p class="slider-caption-text">
<?php echo $lightboxassetcaption ?>
</p>
</div>
<?php
$slidercount ++;
endwhile;
?>
<?php
endwhile;
wp_reset_postdata();
endif;
}
が、私はこの関数にsliderId
VARを渡すと(私もこのHTMLに追加する必要があり、小さなJavascriptの機能がある)完全に機能するスライダーを返すことができるように願っています。
事前に全員に感謝しています。