如何在JavaScript中获取WordPress站点首页URL?
在WordPress Ajax JavaScript中动态获取首页URL的方法
我来帮你搞定这个问题——不用硬编码首页URL,而是通过WordPress的官方方法动态获取,这样你的代码在切换部署环境(比如本地测试到线上服务器)时,不用手动修改URL,更健壮可靠。
第一步:在PHP中传递首页URL到JavaScript
WordPress推荐使用wp_localize_script函数来把PHP变量传递给前端JS,这是最规范的做法。你可以在主题的functions.php或者自定义插件里添加这段代码:
function enqueue_my_custom_ajax_script() { // 先注册你的JavaScript文件(如果还没注册的话) wp_register_script( 'custom-ajax-script', get_template_directory_uri() . '/js/your-script-file.js', // 替换成你的JS文件实际路径 array('jquery'), '1.0', true ); // 把需要的PHP变量传递到JS,生成全局对象MyAjax wp_localize_script( 'custom-ajax-script', 'MyAjax', array( 'home_url' => get_home_url(), // 这里就是你要的动态首页URL 'ajax_url' => admin_url('admin-ajax.php') // 顺便动态获取admin-ajax.php地址,不用硬编码 ) ); wp_enqueue_script('custom-ajax-script'); } add_action('wp_enqueue_scripts', 'enqueue_my_custom_ajax_script');
第二步:修改你的JavaScript代码
现在你可以在JS里直接调用MyAjax.home_url来获取首页URL,同时用MyAjax.ajax_url替换硬编码的admin-ajax地址:
<script> $j = jQuery.noConflict(); $j(document).ready(function(){ $j('.new_post_btn').click(function(){ var dataString = { 'action': 'new_post_action', 'post_status': 'draft', }; $j.ajax({ type: "POST", url: MyAjax.ajax_url, // 动态获取ajax处理地址 data: dataString, success: function(msg){ if(msg !== 'false') { msg = msg.substring(0, msg.length - 1); // 用动态首页URL拼接跳转地址 window.location = MyAjax.home_url + '/wp-admin/post.php?post=' + msg + '&action=elementor'; } } }); }); }); </script>
为什么要这么做?
- 避免硬编码URL带来的维护问题:如果你的站点域名、目录结构变化,不需要手动修改JS里的URL,代码自动适配。
- 遵循WordPress开发规范:
wp_localize_script是官方推荐的PHP与JS数据交互方式,比直接输出全局变量更安全、更符合最佳实践。 - 顺便优化了admin-ajax.php的地址获取:用
admin_url('admin-ajax.php')动态生成,同样避免硬编码的问题。
内容的提问来源于stack exchange,提问作者jom
相关产品推荐
相关产品推荐

