Php 如果有单词,加载其他Wordpress主题
这就是我想要完成的。在Wordpress中,我创建了一个名为Php 如果有单词,加载其他Wordpress主题,php,wordpress,if-statement,taxonomy,term,Php,Wordpress,If Statement,Taxonomy,Term,这就是我想要完成的。在Wordpress中,我创建了一个名为categorie的分类法,其中包含app、web和品牌。当一个项目有术语app时,我想加载另一个主题/博客。当一个项目有术语web或branding时,我想加载single.php。最后一个很好用 这是到目前为止我的代码 function load_single_template($template) { $new_template = ''; if( is_single() ) { global $post; i
categorie
的分类法,其中包含app
、web
和品牌
。当一个项目有术语app时,我想加载另一个主题/博客。当一个项目有术语web或branding时,我想加载single.php
。最后一个很好用
这是到目前为止我的代码
function load_single_template($template) {
$new_template = '';
if( is_single() ) {
global $post;
if( has_term('app', 'categorie', $post) ) {
$new_template = get_theme_roots('themeApp');
} else {
$new_template = locate_template(array('single.php' ));
}
}
return ('' != $new_template) ? $new_template : $template;
}
add_action('template_include', 'load_single_template');
因此,当一个项目有术语
app
,我想加载主题themeApp
。有什么建议吗?提前感谢。我们必须在插件AppPresser中完成类似的任务。您可以在此处看到我们的解决方案:
基本上,您需要在3个过滤器中更改主题名称:“模板”、“选项模板”、“选项样式表”
但是获取类别并不是那么简单,因为模板检查在WordPress过程中发生得足够早,以至于全局$post
和$wp\u query
对象不可用
以下是一种可以实现的方法:
<?php
add_action( 'setup_theme', 'maybe_theme_switch', 10000 );
function maybe_theme_switch() {
// Not on admin
if ( is_admin() )
return;
$taxonomy = 'category';
$term_slug_to_check = 'uncategorized';
$post_type = 'post';
// This is one way to check if we're on a category archive page
if ( false !== stripos( $_SERVER['REQUEST_URI'], $taxonomy ) ) {
// Remove the taxonomy and directory slashes and it SHOULD leave us with just the term slug
$term_slug = str_ireplace( array( '/', $taxonomy ), '', $_SERVER['REQUEST_URI'] );
// If the term slug matches the one we're checking, do our switch
if ( $term_slug == $term_slug_to_check ) {
return yes_do_theme_switch();
}
}
// Try to get post slug from the URL since the global $post object isn't available this early
$post = get_page_by_path( $_SERVER['REQUEST_URI'], OBJECT, $post_type );
if ( ! $post )
return;
// Get the post's categories
$cats = get_the_terms( $post, $taxonomy );
if ( ! $cats )
return;
// filter out just the category slugs
$term_slugs = wp_list_pluck( $cats, 'slug' );
if ( ! $term_slugs )
return;
// Check if our category to check is there
$is_app_category = in_array( $term_slug_to_check, $term_slugs );
if ( ! $is_app_category )
return;
yes_do_theme_switch();
}
function yes_do_theme_switch( $template ) {
// Ok, switch the current theme.
add_filter( 'template', 'switch_to_my_app_theme' );
add_filter( 'option_template', 'switch_to_my_app_theme' );
add_filter( 'option_stylesheet', 'switch_to_my_app_theme' );
}
function switch_to_my_app_theme( $template ) {
// Your theme slug
$template = 'your-app-theme';
return $template;
}
我找到了一个解决办法。我使用了基于Head2Space SEO插件的插件。有了这个插件,我可以在我的自定义帖子中引用另一个主题。非常感谢你提供的信息。如上所述,我现在正在使用插件,这是一种非常简单的方法来完成我想做的事情。但我肯定会看一看信息,找到一个更理想的解决方案。再次感谢!