在快捷码函数之外获取快捷码属性

时间:2013-04-25 作者:Tom

我正在编写一个幻灯片短码,需要在外部函数中获取短码属性,以便将javascript添加到页脚。

例如:

add_shortcode(\'test\',\'test_function\');
function test_function($atts) {

    extract(shortcode_atts(array(
        \'arrows\' => true,
    ), $atts));

    return \'..............\';
}
现在,我想将“arrows”属性传递到要包含在页脚中的javascript中。。

function add_slideshow_js() { ?>
    <script>
        jQuery("ID").slideshow({
            directionNav : <?php echo $arrows; ?>
        });
    </script>
<?php }
add_action(\'wp_footer\',\'add_slideshow_js\');
当然,这只是一个非常简单的版本。。

有人能给我指出正确的方向吗?

谢谢

2 个回复
SO网友:fuxia

可以使用将数组传递给脚本wp_localize_script($handle, $object_name, $l10n).

function test_function( $atts )
{
    $data = shortcode_atts(
        array (
            \'arrows\' => TRUE
        ),
        $atts
    );
    wp_enqueue_script( \'your_script_name\' );
    wp_localize_script(
        \'your_script_name\',
        \'yourScriptObject\',
        $data
    );

    return \'a string\';
}
在(外部)脚本中,您现在可以使用…

var arrows = yourScriptObject.arrows;
…因为WordPress将创建一个名为yourScriptObject 现在在加载外部脚本之前。

其他短代码属性可用于yourScriptObject.othername 或者不管你用什么名字。有关更详细的示例,请参见中的“我的脚本”this answer.

SO网友:Tom

最后,我使用外部函数中所需的属性创建了一个全局数组。然后,我在外部函数中简单地调用了该全局函数,并调用了所有值,如:$slideshow\\u data[\'arrows\')等。。工作得很有魅力:)

例如:

global $slideshow_data;
$slideshow_data = array(
    \'id\'     => $id,
    \'arrows\' => $arrows,
);
上述代码位于实际的shortcode函数内部。

然后在我的add\\u slideshow\\u js函数中,我做了以下操作:

global $slideshow_data;
?>
<script>
jQuery("<?php echo $slideshow_data[\'id\'];?>").slideshow({
    directionNav : <?php echo $slideshow_data[\'arrows\']; ?>
});
</script>
<?php.....
唯一的问题是我每页只能播放一个幻灯片。。如果有人对此有任何想法,我将不胜感激!

结束

相关推荐

通过ShortCode属性传递标记

祝大家节日快乐。希望有人能帮助我思考我遇到的问题。我有一个插件Im building,允许用户从maps API中提取地址数据,即它验证地址,如果是业务,则提取标记图标、地址详细信息、web链接等,并构建一个短代码以在前端呈现地图。目前正在构建短代码,并通过tinyMCE模式窗口预览结果。创建地图标记内容(标记信息气泡)是导致我变灰的原因。我希望用户能够添加或操作此块的内容,但最终的结果是相当多的标记。到目前为止,我已尝试通过以下其中一个快捷码属性传递生成的标记:[my_gmaps id=\"map\"