我正在运行一些函数,允许用户从外部目录向我的自定义主题注册自己的自定义模板。他们可以在wp-admin
它们在前端渲染。
这一切都很好,但我想注册来自多个目录的文件,而不仅仅是一个目录。
我需要$file
相等的多个目录。我试过一个数组。我试过了&&
还有一些其他的东西,包括下面的代码,但都不起作用。
我不是职业选手,但我还缺什么?这能做到吗?在下面的代码中,我看到$file =
优先于上一个$file =
.
那么我有什么办法$file
等于多条路径?
简而言之,我想要$file
考虑多条路径。
代码可能解释了我试图实现的目标。
$file = CUSTOM_OPTION_BACKEND_TEMPLATES_PATH . \'/home/\' . get_post_meta( $post->ID, \'_wp_page_template\', true );
$file = CUSTOM_OPTION_BACKEND_TEMPLATES_PATH . \'/pages/\' . get_post_meta( $post->ID, \'_wp_page_template\', true );
$file = CUSTOM_OPTION_BACKEND_TEMPLATES_PATH . \'/blog/\' . get_post_meta( $post->ID, \'_wp_page_template\', true );
$file = CUSTOM_OPTION_BACKEND_TEMPLATES_PATH . \'/single-posts/\' . get_post_meta( $post->ID, \'_wp_page_template\', true );
$file = CUSTOM_OPTION_BACKEND_TEMPLATES_PATH . \'/products/\' . get_post_meta( $post->ID, \'_wp_page_template\', true );
$file = CUSTOM_OPTION_BACKEND_TEMPLATES_PATH . \'/templates/\' . get_post_meta( $post->ID, \'_wp_page_template\', true );
$file = CUSTOM_OPTION_BACKEND_TEMPLATES_PATH . \'/products/\' . get_post_meta( $post->ID, \'_wp_page_template\', true );
if ( file_exists( $file ) ) {
return $file;
}
最合适的回答,由SO网友:Max Yudin 整理而成
最后一个$file
优先于上一个
这是因为您将新值指定给$file
每行变量。
我认为您可以通过使用阵列来完成此操作的唯一方法是:
<?php
// define directory list
$directories = array(
\'home\',
\'pages\',
\'blog\',
\'single-posts\',
\'products\',
\'templates\',
\'products\'
);
// run through directories and return the result for each of them
foreach($directories as $directory) {
// create path for each directory
$path = CUSTOM_OPTION_BACKEND_TEMPLATES_PATH . \'/\' . $directory . \'/\' . get_post_meta( $post->ID, \'_wp_page_template\', true );
// return path if file exists
if ( file_exists( $path ) )
return $path;
}