显示其他页面模板和插件激活的侧边栏

时间:2013-02-18 作者:user1752759

我正在使用Wordpress(3.5.1)和Woocommerce插件(1.6.6)开发一个儿童主题。

我注意到,创建在线商店、单一产品页面和分类页面(类别和标签)的问题在于,它使用自己的模板来显示这些页面(,可以自定义),但对其他页面(如结帐、购物车、我的帐户等)的更改不会受到影响,因为它们是从主题的page.php 样板

因此,我想在页面属性列表中激活Woocommerce插件并隐藏/不显示时,显示其他模板页面以供选择。

例如,默认情况下:

全宽,右侧边栏,三分之一列,右侧边栏,当Woocommerce启动时:

全宽,右侧边栏,三分之一,三分之二列,左侧边栏-------商店,右侧边栏<-------

非常感谢。

3 个回复
SO网友:Chip Bennett

与其使用页面模板定义版面,不如使用自定义post meta定义版面。然后可以使用显示或不显示自定义post metais_plugin_active().

如果您要在主题中定义页面模板本身,那么您几乎要做一些事情,比如确定插件是否处于活动状态(在前端,应该使用function_exists() 有条件的或类似的),如果没有,则包括默认模板。例如:

/**
 * Template Name: Shop
 */

if ( ! function_exists( \'some-woocommerce-function\' ) ) {
    get_template_part( \'page\' );
} else {

// Shop template markup goes here

}
这样,即使选择了模板,它也会正常降级。

SO网友:Milo

您可以在检查后添加边栏区域is_plugin_active().

看见this question 关于页面模板和页面属性元框。我认为您唯一的选择是将文件复制到中,或者在隐藏原始文件的同时创建自己的页面属性元框。

SO网友:Cole

我搜了很长时间,希望在某处有一个过滤器或动作,但我似乎什么也没找到。

你可以像这样用JS破解它。。

// Change woocommerce to whatever the plugin\'s folder path is
if(!is_plugin_active(\'woocommerce\')) {
    // Create a quick array incase you want to quickly add or change the templates you are removing
    $remove_templates = array(\'template-number-1.php\',\'template-number-2.php\',\'...\');
    ?><script type="text/javascript">
        // jQuery because I don\'t know anything else
        jQuery(document).ready( function($) {
            <?php foreach($remove_templates as $template) : ?>
                $(\'#page_template\').find(\'option[value="<?php echo $template ?>"]\').remove();
            <?php endforeach; ?>
        }
    </script><?php 
}

结束

相关推荐

Display All Non-Used Plugins

我的公司目前拥有大约20个多站点,并且每天都在增长。我们正在尝试通过插件并制定标准。IE,表单使用插件X。然而,我们还没有找到一种单一的方法来检查和系统地显示哪些插件甚至没有被使用。是否有一个功能可以向我们显示已使用或未使用的插件?我试着寻找我能想到的一切,但我一生都找不到答案。