切换主题时,我正在尝试更新Posteta表。我正在将元值更新为模板名称。主题名称。php。
然而,这只适用于wordpress中的默认主题。
如果我去添加一个新主题,并激活它,它将不起作用。
元值更新正确,但新主题将覆盖自定义模板。
这是我的密码。
<?php
add_action(\'after_switch_theme\', \'update_templates\');
function update_templates() {
global $wpdb;
$new_template = "pl-template.". strtolower(trim(get_current_theme())) .".php";
$pl_pages = $wpdb->get_results(" SELECT * FROM {$wpdb->prefix}posts WHERE pevo_page = 1");
foreach ( $pl_pages as $pages) {
$post_id = $pages->ID;
$wpdb->query(
"
UPDATE {$wpdb->prefix}postmeta
SET meta_value = \'$new_template\'
WHERE post_id = $post_id
"
);
}
}
?>
自定义模板现在为空,只显示页面标题
<?php
/*
Template Name: Template Name
*/
$the_title = get_the_title();
echo $the_title;
?>
工作代码由于答案,我使用了一个数组,因为它在我的插件类中。
add_filter( \'template_include\', array($this, \'plugin_page_templates\'));
function plugin_page_templates() {
global $wpdb;
$pagename = get_the_title();
$ispluginpage = $wpdb->get_var("SELECT plugin_page FROM {$wpdb->prefix}posts WHERE post_title = \'$pagename\'");
if ($ispluginpage == 1) {
return plugin_dir_path( __FILE__ ) . \'includes/plugin-template.php\';
}
return $template;
}