在短码中使用wp_enQueue_SCRIPT时在表头添加JS

时间:2017-08-31 作者:The Bobster

我正在尝试将一个JavaScript文件排队到我的网站标题中。

如果我在主插件文件中添加以下内容,则JS将包含在标题中:

function wpdocs_theme_name_scripts() {

    wp_register_script(\'googlesearch\', \'https://maps.googleapis.com/maps/api/js\');
    wp_enqueue_script(\'googlesearch\');

}

add_action( \'wp_enqueue_scripts\', \'wpdocs_theme_name_scripts\' );
但我只想为特定的短代码包含JS,我在主插件文件中添加了以下内容:

function wpdocs_theme_name_scripts() {

    wp_register_script(\'googlesearch\', \'https://maps.googleapis.com/maps/api/js\');

}

add_action( \'wp_enqueue_scripts\', \'wpdocs_theme_name_scripts\' );
短代码中包含以下内容:

wp_enqueue_script(\'googlesearch\');
现在JS文件包含在网站的页脚中。

我尝试手动指定JS应该像这样加载到页眉中,但它仍然会加载到页脚中:

wp_enqueue_script( \'googlesearch\', \'https://maps.googleapis.com/maps/api/js\', array(), \'1.0.0\', false );
有人知道为什么会这样吗?感谢您的帮助!

2 个回复
SO网友:KAGG Design

页面按以下顺序创建和输出:页眉、内容、页脚。Shorcode是在构建页面内容的过程中执行的,此时页面上已经输出了标题。所以,在这个阶段不可能在标题中添加任何脚本:为时已晚。

SO网友:HU ist Sebastian

虽然这是一个相当“脏”的修复,但您可以实现如下所示的预期效果:

function wpdocs_theme_name_scripts() {

    wp_register_script(\'googlesearch\', \'https://maps.googleapis.com/maps/api/js\');

    if(is_singular()){
          global $wp_query;
          $postid = $wp_query->get_queried_object_id();
          $mypost = get_post($postid);
          $unfiltered_content = $mypost->post_content;
          if(has_shortcode($unfiltered_content,\'<SHORTCODE WITHOUT BRACKETS>\')){
               wp_enqueue_script(\'googlesearch\');
          }
    }    
}

add_action( \'wp_enqueue_scripts\', \'wpdocs_theme_name_scripts\' );
快乐编码,Kuchenundkakao

结束

相关推荐

add_shortcode is not working

当我在web服务器上使用此文档时,它运行正常,但当此文件运行以使用WordPress中的插件时,我必须将文件的快捷码放在我要应用该插件效果的页面上。。。。但当我放置短代码时,它只显示该短代码的字符串,而不显示效果。请找到下面的编码文件并提供解决方案。<?php function sac_form() { echo \"<html>\"; echo \"<head></head>\"; echo \"<body>\