我正在为教育网站开发一个插件。我在插件中添加了3-4个页面模板,以便在插件激活时调用。
直到WordPress4.7
, 它工作得很好;但当我将WordPress升级到最新版本时(从4.6.3
), 页面模板甚至不会显示在页面属性部分。
以下是在旧版本(之前)中运行良好的代码4.7
):
add_action( \'wp_loaded\', \'add_my_templates\' );
function add_my_templates() {
if( is_admin() ){
global $wp_object_cache;
$current_theme = wp_get_theme();
$templates = $current_theme->get_page_templates();
$hash = md5( $current_theme->theme_root . \'/\'. $current_theme->stylesheet );
$templates = $wp_object_cache->get( \'page_templates-\'. $hash, \'themes\' );
$templates[\'templates/exams.php\'] = __(\'Exams\');
$templates[\'templates/colleges.php\'] = __(\'Colleges\');
$templates[\'templates/study_home.php\'] = __(\'Study Home\');
$templates[\'templates/study_job_home.php\'] = __(\'Study Job Home\');
wp_cache_replace( \'page_templates-\'. $hash, $templates, \'themes\' );
}
else {
add_filter( \'page_template\', \'get_my_template\', 1 );
}
}
function get_my_template( $template ) {
$post = get_post();
$page_template = get_post_meta( $post->ID, \'_wp_page_template\', true );
if( $page_template == \'templates/study_home.php\' ) {
$template = plugin_dir_path(__FILE__) . "templates/study_home.php";
}
if( $page_template == \'templates/study_job_home.php\' ) {
$template = plugin_dir_path(__FILE__) . "templates/study_job_home.php";
}
if( $page_template == \'templates/exams.php\' ) {
$template = plugin_dir_path(__FILE__) . "templates/exams.php";
}
if( $page_template == \'templates/colleges.php\' ) {
$template = plugin_dir_path(__FILE__) . "templates/colleges.php";
}
return $template;
}
我正在寻找过去两天的解决方案,但运气不好!