WP_enQueue_SCRIPT()不工作

时间:2011-09-27 作者:kidwon

我正在尝试添加此社交网络按钮:

<a href="http://svejo.net/submit/?url=[your url]"
     data-url="[your url]"
     data-type="compact"
     id="svejo-button">Add in Svejo</a>
<script type="text/javascript" src="http://svejo.net/javascripts/svejo-button.js"></script>
我的博客帖子。但是在每篇文章中加载这个会让我的页面速度变慢,所以我尝试用wp_enqueue_script() 在我的内部functions.php

function socialNetworks(){
    $opentag = \'<ul class="socials">\';
    $closetag = \'</ul>\';

    $socials[\'svejonet\'] =
        \'<a href="http://svejo.net/submit/?url=[\'.get_permalink().\']" data-url="[\'.get_permalink().\']" data-type="compact" id="svejo-button">Add in Svejo</a>\'.
        wp_enqueue_script( \'none\', \'http://svejo.net/javascripts/svejo-button.js\', array(), false, true);

    echo $opentag;
    foreach ( $socials as $key=>$val ){
       echo \'<li class="\'.$key.\'">\'.$val.\'</li>\';
    }
    echo $closetag;   
}
但是,脚本不会加载
感谢您的帮助br,Stephan

1 个回复
SO网友:chrisguitarguy

您发布的社交网络按钮分为两个不同的部分。

首先,按钮本身由锚标记定义。

<a href="http://svejo.net/submit/?url=[your url]"
     data-url="[your url]"
     data-type="compact"
     id="svejo-button">Add in Svejo</a>
然后,脚本可能会用iframe或类似的东西替换该按钮,这样您就不必将用户发送到其他地方才能使其工作。

<script type="text/javascript" src="http://svejo.net/javascripts/svejo-button.js"></script>
第一部分,锚定标签,应该放在single.php 文件,可能看起来像这样:

<a href="http://svejo.net/submit/?url=<?php the_permalink(); ?>"
     data-url="<?php the_permalink(); ?>"
     data-type="compact"
     id="svejo-button">Add in Svejo</a>
这不会减慢加载时间。接下来您可以使用wp_enqueue_script 在您的functions.php 文件在这里,我们将wp_enqueue_scripts 并将脚本放入挂钩函数中。

<?php
add_action( \'wp_enqueue_scripts\', \'wpse29581_print_scripts\' );
function wpse29581_print_scripts()
{
    wp_enqueue_script( \'svejo-wpse29581\', \'http://svejo.net/javascripts/svejo-button.js\', array(), NULL, true );
}
的最后一个参数wp_enqueue_script 告诉WordPress在页脚中加载脚本。这将有助于防止脚本延迟页面加载。

但是,我们可以通过检查是否在一个贴子页面上,并且只有在该页面上时才将脚本排入队列,从而使此功能变得更好。仅在需要时加载脚本。

<?php
add_action( \'wp_print_scripts\', \'wpse29581_print_scripts\' );
function wpse29581_print_scripts()
{
    // if this isn\'t a single post page, bail
    if( ! is_single() ) return;
    wp_enqueue_script( \'svejo-wpse29581\', \'http://svejo.net/javascripts/svejo-button.js\', array(), NULL, true );
}
这是正确的使用方法wp_enqueue_script 在这种情况下。我想你对它的工作原理有点困惑。

结束

相关推荐

PHP echo inside javascript

我已经在wordpress中安装了jwplayer,并将其显示在单个页面中。php页面。。。按照我的方式,我需要在javascript和I中获得一个自定义字段;我没有运气在那里回应它。我知道你不能在javascript函数中直接运行PHP,因此我在这里问noob问题:)<script type=\'text/javascript\'> jwplayer(\"lbp-inline-href-1\").setup({ \'flashplayer\': \'/wp-content/u