如何从JS文件中获取当前主题的路径?

时间:2018-06-14 作者:VIBrunazo

我从默认的2017主题创建了一个子主题。我正在函数上加载一个javascript文件。php使用:

wp_enqueue_script(\'testpage\', get_stylesheet_directory_uri() . \'/js/testscript.js\', array(\'jquery\'), \'\', true);
然后在这个javascript文件上,我尝试使用load a。json使用jQuery.getJSON. 这个json文件与位于同一目录中。js文件。因为我使用get_stylesheet_directory_uri(), 我由此推测了当前的路径。js将是它位于主题内的路径?但显然情况并非如此。如果我尝试加载。json使用到同一目录的相对路径,然后我得到一个404。

jQuery.getJSON("mydata.json") will 404因为它实际上www.mysite.com/js/mydata.json 而不是在www.mysite.com/wp-content/themes/twentyseventeen-child/js/mydata.json

所以我用jQuery.getJSON("/wp-content/themes/twentyseventeen-child/js/mydata.json") 目前,这很好用。

但恐怕这样做不是一种好的做法?像JS文件中那样对整个主题路径进行硬编码是不好的,因为该目录可以根据安装情况而更改,对吗?那么,有没有办法获得当前的主题路径?类似get_stylesheet_directory_uri() 在PHP中?或者也许有其他完全可以避免这个问题的方法?或者这一点问题都没有,我就可以保持这样?

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

您可以使用wp_localize_script 在文件之前传递带有要加载的url的对象。然后在文件中你可以像这样使用它testpage_obj.json_data

wp_register_script(\'testpage\', get_stylesheet_directory_uri() . \'/js/testscript.js\', array(\'jquery\'), \'\', true);
wp_localize_script( \'testpage\', \'testpage_obj\', array(
    \'json_data\' => get_stylesheet_directory_uri() . \'/js/mydata.json\'
) );
wp_enqueue_script(\'testpage\');
在JS文件中

jQuery.getJSON(testpage_obj.json_data)

结束

相关推荐

如何执行对外部API的“Get”调用,然后在WordPress站点的页面上显示JSON结果?

客户端有一个存储所有成员信息的外部API。我的任务是:a、 )在其网站上创建“会员档案搜索”页面,用户可以在该页面中使用特定关键字搜索会员。b、 )当单击搜索页面上的提交按钮时,对外部API执行“get”调用,该调用将返回JSON对象,然后在站点上的页面中显示结果-可能与搜索页面相同我的问题:1)是否有一个插件可以用来实现这一点?2)如果没有使用可用插件的解决方案,我如何才能做到这一点?我是一名web开发人员,已经定制了一些WP网站,但没有什么需要这种级别的专业知识,因此您的帮助将是greatly 非常感