Estoy trabajando en un complemento que necesitamos para el sitio web de educación. He agregado 3-4 plantillas de página dentro de mi complemento para que podamos llamar cuando el complemento esté activado.
Hasta WordPress 4.7
, estaba funcionando perfectamente; pero cuando actualicé WordPress a la última versión (de 4.6.3
), las plantillas de página ni siquiera se muestran en la sección de atributos de la página.
Aquí está el código que funcionaba bien con versiones anteriores (antes de 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;
}
Estoy buscando la solución de los últimos 2 días, ¡pero no tengo suerte!