我有一个自定义的wordpress插件,它将注册一些短代码。我想添加一个功能以使用简码显示swiper.js滑块,但无法实现此范围。如果我将画廊附加到页面或帖子上,它将不会显示,在我的函数类中返回的get_post_gallery_images()
数组将始终为空。我该如何解决?如何仅删除默认的wordpress画廊简码以将自己的代码与附加的图片一起使用?
我的插件方法代码
public function imgSlider( $attr, $content )
{
global $post;
$a = shortcode_atts(array(
'pagination' => null,
'buttons' => null,
'scrollbar' => null
), $attr);
$images = get_post_gallery_images( $post );
var_dump($images);
$slider = '';
if( $images ){
$slider = '<div class="swiper-container">';
$slider .= '<div class="swiper-wrapper">';
foreach( $images as $img ){
$slider .= '<img class="img-fluid w-100" src="'. $img .'">';
}
$slider .= '</div>';
if( $a['pagination'] === true ){
$slider .= '<div class="swiper-pagination"></div>';
}
if( $a['buttons'] === true ){
$slider .= '<div class="swiper-button-prev"></div>';
$slider .= '<div class="swiper-button-next"></div>';
}
$slider .= '</div>';
}
// This will return true
//var_dump(has_shortcode( $post->post_content, 'gallery' ));
return $slider;
}
这是我创建的用于调试代码并验证自定义短代码是否有效的测试页的内容
注意:我注意到当我使用简码时,在HTML中会添加一个空的<p>
标签和一个<br>
标签,可以删除它们吗?
[bs-container type="container-fluid"]
[bs-col type="6" mobile="display"]Lorem ipsum demo shortcode[/bs-col]
[bs-col type="6" mobile="hide"]<img class="img-fluid w-100" src="https://localhost/wordpress/wp-content/uploads/2019/09/ig_testing_account_2.jpeg">[/bs-col]
[bs-col type="12" mobile="hide"]
[bs-slider pagination="true" buttons="true" scrollbar="false"][gallery link="none" size="large" ids="37,38,25"][/bs-slider]
[/bs-col]
[/bs-container]
[bs-parallax img="https://images.unsplash.com/photo-1569017436947-e1e377435a13?crop=entropy&cs=tinysrgb&fit=crop&fm=jpg&h=600&ixlib=rb-1.2.1&q=80&w=800" is_section="false" overlay="false"][/bs-parallax]