有很多很好的解决方案可以做到这一点,您应该遵循cjbj在评论中提供的链接。
我建议使用PHP的debug_backtrace()
功能:
function wpse_228223_verify_caller_file( $file_name, $files = array(), $dir = \'\' ) {
if( empty( $files ) ) {
$files = debug_backtrace();
}
if( ! $dir ) {
$dir = get_stylesheet_directory() . \'/\';
}
$dir = str_replace( "/", "\\\\", $dir );
$caller_theme_file = array();
foreach( $files as $file ) {
if( false !== mb_strpos($file[\'file\'], $dir) ) {
$caller_theme_file[] = $file[\'file\'];
}
}
if( $file_name ) {
return in_array( $dir . $file_name, $caller_theme_file );
}
return;
}
用法:
在您的content-form
模板,在第一个参数中传递文件名:
echo var_dump( wpse_228223_verify_caller_file( \'header.php\' ) ); // called from header
echo var_dump( wpse_228223_verify_caller_file( \'footer.php\' ) ); // called from footer
您可以在模板中添加适当的类名。。
请先做几个测试。我测试的方式很好。因为您正在创建自己的自定义模板,除非您调用它,否则默认情况下不会调用它,所以应该可以正常工作。