【在WordPress主题开发中使用相对路径的正确方法是什么()】我正在编写一些用于wordpress主题开发的代码, 我打算将其重用于将来的主题(甚至可以上传到github)。它由几十个文件以及一些javascript和css文件组成。
我将来唯一要做的承诺是, 我所有的文件都将放置在同一目录中, 该目录放置在主题目录中的位置是未知的。
如果我不知道文件的绝对路径(get_template_directory_uri。
我也希望与其编写十几行的include \ require, 不如编写一个包含文件, 该文件将通过它们的相对路径包含其余文件。
#1如果你需要主题索引文件中的路径, 一个简单的解决方案(不一定是最正确的方法)可能是这样的:
<
?php
$TEMPLATE_PATH = get_template_directory_uri();
$TEMPLATE_PATH = parse_url($TEMPLATE_PATH, PHP_URL_PATH);
?>
然后, 你可以将$ TEMPLATE_PATH用作相对路径, 如下所示:
<
link href="http://www.srcmini.com/<
?php echo $TEMPLATE_PATH;
?>
/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
输出如下:
<
link href="http://www.srcmini.com/wp-content/themes/ThemesName/favicon.ico" rel="shortcut icon" type="image/x-icon"/>
希望有人觉得这有用。
#2有两个主要的WP函数可用于查找主题内的相对路径:
get_template_directory()
get_template_directory_uri()
你可以创建一个名为” 可重用” 或适当名称的主题子目录, 它是顶层子目录。此外, 假设你的文件集如下:
mytheme/reusable/loader.php
mytheme/reusable/include-me.php
mytheme/reusable/include-another.php
mytheme/reusable/js/reuse.js
mytheme/reusable/css/reuse.css
loader.php:
<
?php
// add as many files as you want to this array
$include_paths = array(
'reusable/include-me.php', 'reusable/include-another.php', );
// loop through the paths and include them if they exist
$template_directory = trailingslashit(get_template_directory());
foreach( $include_paths as $path ) {
$complete_path = $template_directory . $path;
if( file_exists( $complete_path ) ) {
include($complete_path);
}
}
// function to enqueue js and css
function reusable_enqueue_scripts() {
$template_directory_uri = get_template_directory_uri();
wp_enqueue_style( 'reusable-style', $template_directory_uri . '/css/reuse.css');
wp_enqueue_script( 'reusable-js', $template_directory_uri . '/js/reuse.js');
}
// add function to enqueue action hook
add_action( 'wp_enqueue_scripts', 'reusable_enqueue_scripts' );
然后在主题的functions.php文件中:
$reusable = trailingslashit(get_template_directory()).'reusable/loader.php';
include($reusable);
你还可以查看一个非常有用的WP函数get_template_part(), 它可能会改变你对解决方案的想法。
#3你可以从WP函数下面检索主题目录URI, 然后可以将文件名与相应的文件夹名一起传递。
get_template_directory_uri()
#4我最终使用目录名(__FILE__)确定loader.php的位置, 并从其中减去get_template_directory()以获得主题目录内我的代码的相对路径, 如下所示:$ MY_PATH = str_replace(realpath(get_template_directory()), “ ” , dirname(__ FILE__)));
最终结果load.php:
$MY_PATH =str_replace(realpath(get_template_directory()), "", dirname(__FILE__)));
require_once('file1.php');
require_once('file2.php');
require_once('file3.php');
function my_scripts() {
$mypath = $GLOBALS['MY_PATH'];
wp_enqueue_style( 'my-style', $template_directory_uri . $mypath . '/style.css');
wp_enqueue_script( 'my-js', $template_directory_uri . $mypath . '/script.js');
}add_action( 'wp_enqueue_scripts', 'my_scripts' );
现在, 我可以更改代码目录位置, 而无需在loader.php中编辑代码。
推荐阅读
- 检索模板目录URL的更好方法是什么(bloginfo(‘template_url’)或echo esc_url(get_template_directory_uri())())
- #私藏项目实操分享#Spring专题「技术原理」Spring Security的核心功能和加载运行流程的原理分析
- #yyds干货盘点#C语言程序编译与预处理
- #私藏项目实操分享#iOS开发(实现点击常用控件弹出地区选择框(万能方法))
- #yyds干货盘点# 图床 | gitee+typora+picgo搭建个人图床
- Java&Go三种HTTP服务端端性能测试#yyds干货盘点#
- PassJava 开源 ( Spring Cloud 整合Gateway网关 #私藏项目实操分享#)
- #2021年底大盘点#Spring认证中国教育管理中心-Apache Geode 的 Spring 数据教程十一
- #yyds干货盘点#16.父子组件事件通信