提供wp-包括(前端)来自不同域的脚本?

时间:2012-06-27 作者:its_me

WordPress Codex指出了一种非常简单的方法来更改URL wp内容目录,即在wp配置中添加此目录。php:

define( \'WP_CONTENT_URL\', \'http://example.com/wp-content\');
这就完成了为我的网站上的大多数JavaScript和CSS文件提供服务的工作,这些文件来自不同的域,只有两个除外。

http://mywebsite.com/wp-includes/js/comment-reply.js
http://mywebsite.com/wp-includes/js/quicktags.js
原因很清楚-这些JavaScript文件是从wp-includes 目录,它不受上述规则的影响。

那么,有没有一种类似或简单的方法可以为他们提供服务example.com i、 e.我选择的领域?或者,从自定义URL(在functions.php中完成)取消注册和排队脚本是唯一的方法吗?

3 个回复
最合适的回答,由SO网友:its_me 整理而成

好吧,我尝试了很多(字面上的)代码和方法,但都失败了。因此,正如我在问题中所说,唯一安全的方法似乎是重新注册(取消注册并排队)脚本。

The Scripts:

http://mywebsite.com/wp-includes/js/comment-reply.js
http://mywebsite.com/wp-includes/js/quicktags.js

Should be served from:

http://example.com/wp-includes/js/comment-reply.js
http://example.com/wp-includes/js/quicktags.js

Code in functions.php:

add_action(\'wp_enqueue_scripts\',\'wpse56742_register_script\');
function wpse56742_register_script(){

    //Register and enqueue Comment Reply script
    wp_deregister_script(\'comment-reply\');
    wp_register_script(\'comment-reply\', \'http://example.com/wp-includes/js/comment-reply.js\', false, false);
    wp_enqueue_script( \'comment-reply\' );

    //Re-register quicktags script
    wp_deregister_script(\'quicktags\');
    wp_register_script(\'quicktags\', \'http://example.com/wp-includes/js/quicktags.js\', false, false, true);
    wp_localize_script( \'quicktags\', \'quicktagsL10n\', array(
        \'wordLookup\' => __(\'Enter a word to look up:\'),
        \'dictionaryLookup\' => esc_attr(__(\'Dictionary lookup\')),
        \'lookup\' => esc_attr(__(\'lookup\')),
        \'closeAllOpenTags\' => esc_attr(__(\'Close all open tags\')),
        \'closeTags\' => esc_attr(__(\'close tags\')),
        \'enterURL\' => __(\'Enter the URL\'),
        \'enterImageURL\' => __(\'Enter the URL of the image\'),
        \'enterImageDescription\' => __(\'Enter a description of the image\'),
        \'fullscreen\' => __(\'fullscreen\'),
        \'toggleFullscreen\' => esc_attr( __(\'Toggle fullscreen mode\') ),
        \'textdirection\' => esc_attr( __(\'text direction\') ),
        \'toggleTextdirection\' => esc_attr( __(\'Toggle Editor Text Direction\') )
    ));
    wp_enqueue_script( \'quicktags\' );

}
至于wp\\u localize\\u脚本中使用的代码,我知道了straight from trunk (您也可以在您的WP版本中获得它,例如,对于WP 3.4,链接为http://core.svn.wordpress.org/tags/3.4/wp-includes/media.php).

<小时>FAQ: Why is quicktags.js loaded in the front-end in the first place? 因为我正在使用插件-Basic Comment Quicktags

SO网友:asakka

我知道这个问题很老了,但我认为它可能仍然受到一些WordPress粉丝的关注。到目前为止,WordPress还没有实现定义“WP\\u INCLUDES\\u URL”的方法,就像我们可以定义“WP\\u CONTENT\\u URL”一样。

因此,这里有一个简单的解决方法,可以使用“script\\u loader\\u src”过滤器完成从wp includes加载的脚本的技巧:

function filter_wpincludes( $src, $handle ) { 
    $src = str_replace(site_url("/wp-includes"), "https://static.example.com/wp-includes", $src); 
    return $src; 
}; 

// then just add the filter 
add_filter( \'script_loader_src\', \'filter_wpincludes\', 10, 2 ); 
当然,此代码属于您的函数。主题中的php。此过滤器在WordPress加载的每个脚本上运行,然后该函数用新域替换旧域。

在上面的代码中,有以下链接:

 http://mywebsite.com/wp-includes/js/comment-reply.js
将替换为以下链接:

 https://static.example.com/wp-includes/js/comment-reply.js

SO网友:fdsa

功能wp_enqueue_script 函数有一个可选的第二个参数,您可以在其中指定源。

结束

相关推荐

ADMIN_PRINT_SCRIPTS-$HOOK_SUFFIX是否适用于指向单个文件的嵌套路径?

可以用钩子admin_print_scripts-$hook_suffix 用于创建的挂钩,如$hookname = get_plugin_page_hookname(\"my-quiz/lib/admin/$code_page\", \'\' );?哪里$code_page 是somefilename.php.我试过了,但似乎不起作用。我想这可能是因为文件路径?UPDATE上面的代码注册的是“admin\\u page\\u my-quick/lib/admin/question\\u form”,但这