在wordpress主题中使用独立的php文件
wordpress主题中的独立php文件引用所出现的问题
我们在项目开发中,有时候会要用到独立的php文件,而wordpress主题所识别的一些文件并没有包含我们的独立文件。
一般来说,我们在wordpress主题中需要增加的函数是放在function.php中的,我们也可以在function.php中引用我们的独立php文件,所编写的判断或者函数都可以在主题中被运用。
但是不管在function.php中还是引用的其他文件,我们都只能从站点地址发出请求,比如get请求,我们只能在域名如www.themepark.com.cn?getsome=true,返回也是在首页上进行返回的。
这样的方式可以满足我们的一些功能,但是某些需要使用独立php的功能就无法实现了。
比如下方的例子。
我们需要访问主题中某个php文件如get_json.php文件输出一段json数据,如果我们包含在function.php中进行请求,那么输出的json是叠加在首页上的,这样不管我们使用php去获取或者使用js获取都是无法获取到这个数据的。
如果我们直接访问这个php的绝对路径,也就是独立使用这个php,那么不管是wordpress的函数,还是我们放在function.php中的函数都是不能是别的,会提示报错没有这个函数。
那么,我们如何解决在wordpress主题中使用独立php文件,能够使用到wordpress自带的函数和主题内function.php中的函数呢?
wordpress主题使用独立php,引用wordpress的配置文件
解决上文所述的问题实际上比较简单,我们只需要在独立的php中引用wordpress的配置文件wp-confing.php就可以使用到wordpress的函数和wordpress主题的函数了。
因此我们在独立使用php文件时,在文件的顶部引用一下wordpress的配置文件就行了。
wordpress的配置文件在网站的根目录,因此如果我们直接使用require_once时无法引用到的,我们需要使用绝对路径去引用:
在文件头加入如下代码:
$genmul=$_SERVER['DOCUMENT_ROOT'];
require_once("$genmul/wp-config.php");
即可引用到,不过这个代码是直接引用的根目录,如果你的目录形式是使用子目录的 ,如在本地常见的http://localhost/wordpress/,就需要在引用的地方加上你的子目录:
$genmul=$_SERVER['DOCUMENT_ROOT'].'/wordpress';
require_once("$genmul/wp-config.php");
这样,我们的独立php文件就能够正常运行了,如上问所说的输出json数据,直接访问这个php文件发出请求,判断正确的话,就会输出json数据,而不会有别的内容干扰,我们就能非常方便的获取到这个数据了。
这样做的目的具体有些什么用处
上面说了在wordpress主题中使用独立php的方法,下面分享一下我们在最近的项目中使用这个方法进行的功能开发。
wordpress本身是动态程序,因此如果我们将一些数据和请求放在function.php,当网站是动态的话,是没有问题的,直接解析php文件,如果我们使用插件,将全站进行静态化处理之后,解析的是html文件,那么很多函数的判断在静态文件中是失效的。
如果我们希望在静态网站中,使用动态的功能,那么我们可以使用独立的php文件,并且在首页或者底部顶部使用jq,也就是脚本访问这个独立的php,由于直接访问的文件,因此不会受到静态缓存的影响,服务器还是能正确的运行独立php,从而输出我们想要的内容,在通过jq脚本输出到首页,这样就绕过了静态网站,获取到了动态生成的数据。
因此这个方法还是非常有效的,前文所说的,php文件输出json数据,也是使用直接访问php文件输出是最好的办法,简单有效。
今天的开发经验分享就到这里,如果你也有类似的项目,那么希望这篇文章能够给你带来一些启示。
您好!请登录