O problema:
Como Mark sugeriu já , o carregamento do seu modelo através da manipulação de cache está longe de ser uma prática padrão. Com esse tipo de alteração de cache, mesmo se você modificar seu CÓDIGO para trabalhar com o WordPress 4.7+
, não há garantia de que você não encontrará problemas semelhantes em futuras atualizações. Então, é melhor usar qualquer uma das soluções mencionadas abaixo:
Solução de tema:
Em vez de atribuir modelos a partir de um plug-in, você pode ter modelos de página reais no tema ativo. Seu tema ativo é o lugar recomendado para ter esses modelos de página.
Solução de Plugin
No entanto, se você tiver que atribuir esses modelos ao seu plug-in por algum motivo, use o theme_page_templates
4.4+ .
A seguir está a reescrita do seu CÓDIGO usando o gancho de filtro theme_page_templates
:
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' ){
return plugin_dir_path(__FILE__) . "templates/study_home.php";
}
if( $page_template == 'templates/study_job_home.php' ){
return plugin_dir_path(__FILE__) . "templates/study_job_home.php";
}
if( $page_template == 'templates/exams.php' ){
return plugin_dir_path(__FILE__) . "templates/exams.php";
}
if( $page_template == 'templates/colleges.php' ){
return plugin_dir_path(__FILE__) . "templates/colleges.php";
}
return $template;
}
function filter_admin_page_templates( $templates ) {
$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');
return $templates;
}
function add_my_templates() {
if( is_admin() ) {
add_filter( 'theme_page_templates', 'filter_admin_page_templates' );
}
else {
add_filter( 'page_template', 'get_my_template', 1 );
}
}
add_action( 'wp_loaded', 'add_my_templates' );
Use o CÓDIGO acima, em vez do CÓDIGO que você forneceu. Ele funcionará para qualquer versão do WordPress 4.4
e posterior. Eu testei para o WordPress 4.7.2
& funciona bem.