我正在尝试做一个简码,它将额外的 jQuery 脚本添加到wp_footer
.
所以这将是一个示例短代码:
function partners($atts ) {
global $extra_options, $pslider;
extract(shortcode_atts(array(
'ids' => null,
'extra_options' => null
), $atts));
$pslider = 'partners-slider'.rand(100,999);
$ids = explode( ',', $ids );
$output = '<div class="section row-one"><div class="col ps-gradient"><div class="ps-wrap"><div class="'.$pslider.'">';
foreach($ids as $id) {
$img_attr = wp_get_attachment_image_src( $id, 'full' );
$alt_text = get_post_meta( $id, '_wp_attachment_image_alt', true);
$output .= '<div class="pslide"><a href="' . $alt_text . '"><img src="' . $img_attr[0] . '" /></a></div>';
}
$output .= '</div></div></div></div>';
return $output;
}
add_shortcode('partners', 'partners');
从上面的函数中,我需要获取变量并将它们放在一个 jQuery 脚本中:
function print_partners_scripts() {
global $extra_options, $pslider;
echo '<script type="text/javascript">' . "\n";
echo 'jQuery(document).ready( function() {'. "\n";
echo ' $(".'.$pslider.'").bxSlider({
slideWidth: 924,
auto: 1,
autoStart: 1,
moveSlides: 1,
minSlides: 7,
maxSlides: 8,
pager: false,
controls: false,
slideMargin: 5,
autoHover: true
' . $extra_options . '
});' . "\n";
echo '});' . "\n";
echo '</script>' . "\n";
}
add_action( 'wp_footer', 'print_partners_scripts' );
好的,目前我有一个可以返回工作滑块的简码。
但是,如果我尝试在同一页面上再次使用此简码怎么办?我已经检查过了,jQuery 脚本只会追加一次。
我想为每个 [partners] 短代码生成这个 jQuery 脚本。
例如:
[partners extra_options="something: true"]
[partners extra_options="something: false"]
第一个应该将此脚本添加到wp_footer
:
<script type="text/javascript">
jQuery(document).ready( function() {
$(".pslider342").bxSlider({
slideWidth: 924,
auto: 1,
autoStart: 1,
moveSlides: 1,
minSlides: 7,
maxSlides: 8,
pager: false,
controls: false,
slideMargin: 5,
autoHover: true,
extra_options: true
});
});
</script>
有效。
第二个应该添加具有不同变量的相同脚本:
<script type="text/javascript">
jQuery(document).ready( function() {
$(".pslider456").bxSlider({
slideWidth: 924,
auto: 1,
autoStart: 1,
moveSlides: 1,
minSlides: 7,
maxSlides: 8,
pager: false,
controls: false,
slideMargin: 5,
autoHover: true,
extra_options: false
});
});
</script>
不幸的是,没有添加这个。
真的需要你的帮助!