我之前从未这样做过,所以我希望学习如何做到这一点。我在wordpress工作并创建一个插件。我在我的文档顶部有一个函数,它将一些jQuery代码添加到我的页面的页脚,其简化版本如下:
function slug_masonry_init() { ?>
<script>
jQuery(function($) {
var container = document.querySelector("#skizzar_masonry_loop");
var msnry = new Masonry( container, {
columnWidth: <?php echo $masonry_item_width ?>,
gutter: <?php echo $masonry_item_padding ?>,
itemSelector: ".skizzar_masonry_entry"
});
});
</script>
<?php }
//add to wp_footer
add_action( 'wp_footer', 'slug_masonry_init' );
你会注意到<script>
内有一些php变量:$masonry_item_width
和$masonry_item_padding
这些变量是用户定义的,处理这些变量的函数在我的文档中稍微偏低,如下所示:
function skizzar_masonry_shortcode($atts,$content = null) {
global $skizzar_masonry_item_width, $skizzar_masonry_item_padding;
$el_class = '';
extract(shortcode_atts(array(
"masonry_item_width" => '240',
"masonry_item_padding" => '5',
"el_class" => '',
),$atts));
$skizzar_masonry_item_width = $masonry_item_width;
$skizzar_masonry_item_padding = $masonry_item_padding;
$output .= '<style>.skizzar_masonry_entry, .skizzar_masonry_entry img {width:'.$masonry_item_width.'px;} .skizzar_masonry_entry.skizzar_ma_double, .skizzar_masonry_entry.skizzar_ma_double img {width:560px; /* + padding */} .skizzar_masonry_entry {margin-bottom:'.$masonry_item_padding.'px; overflow:hidden;}</style>';
$output .= '<div id="skizzar_masonry_loop" class="'.$el_class.'">';
$output .= do_shortcode($content);
$output .= '</div>';
return $output;
}
SIDE注意:您在此处看到的两个全局变量:$skizzar_masonry_item_width
和$skizzar_masonry_item_width
在文档中稍微定义(在两个代码段之间) - 这是用于输入宽度和填充,您在此处看到的代码会创建一个短代码。
我不知道怎么做的是将$masonry_item_padding
和masonry_item_width
添加到页面顶部的jQuery脚本中 - 目前它们只是返回空白。
答案 0 :(得分:3)
您必须输出echo
个变量
columnWidth: <?php echo $masonry_item_width ?>,
gutter: <?php echo $masonry_item_padding ?>,
至于如何获取你的价值...... Wordpress使插件变得如此混乱,所有这些独立的回调。通常我会厌恶这样做,但我不能想到任何其他方式来使这项工作。我将它们放入一个数组中以减少全局变量。这部分内容在您的skizzar_masonry_shortcode
$GLOBAL['skizzarvar'] = array(
'width' => $masonry_item_width,
'padding' => $masonry_item_padding
);
然后您可以在slug_masonry_init
<?php echo $GLOBAL['skizzarvar']['width'] ?>
答案 1 :(得分:1)
你所要做的就是:
function slug_masonry_init()
{
global $masonry_item_width, $masonry_item_padding;
...
在此处详细了解global
关键字:http://php.net/manual/en/language.variables.scope.php