我正在尝试创建一个插件,您可以在每个页面上选择不同的主题。
要获取所选主题,我需要在;样式表“;和;“模板”;钩住Wordpress选择主题的点:
add_filter( \'stylesheet\',\'hk_get_theme\');
add_filter( \'template\',\'hk_get_parent_theme\' );
function hk_get_theme($stylesheet){
$postID = $GLOBALS[\'post\']->ID;
if ($postID != false) {
$selectedTheme = get_post_meta( $postID, \'hk_theme_select\', true );
if (isset($selectedTheme) && $selectedTheme != \'\') {
$theme = $selectedTheme;
}
}
$theme = $theme ? esc_attr( $theme ) : $stylesheet;
return $theme;
}
function hk_get_parent_theme( $template ){
$postID = $GLOBALS[\'post\']->ID;
if ($postID != false) {
$selectedTheme = get_post_meta( $postID, \'hk_theme_select\', true );
if (isset($selectedTheme) && $selectedTheme != \'\') {
$child_theme = $selectedTheme;
}
}
$themes = wp_get_themes();
if( !isset( $themes[$child_theme] ) ) {
return $child_theme;
}
$theme = $themes[$child_theme];
if( isset( $theme->template ) ){
return $theme->template;
}
return $template;
}
不幸的是,第一次;样式表“;和;“模板”;钩子被执行了,帖子id似乎不存在。
有没有其他方法可以这么早获得页面元数据?还是用另一种方法存储页面的选定主题,以便在此早期获取此数据?请不要吃饼干。