将小部件挂钩到unctions.php中的Woo主题

时间:2014-01-01 作者:Muzza

现在,我正在woocommerce产品上方添加一个侧栏。如何将侧边栏与主题挂钩。

已经注册了侧边栏,它可以正常工作。

register_sidebar( 
    array( 
        \'name\'          => __( \'Filters\', \'woothemes\' ), 
        \'id\'            => \'filters\', 
        \'description\'   => __( \'Optional widgetized shop page (displays only if widgets are added here).\', \'woothemes\' ), 
        \'before_widget\' => \'<div id="%1$s" class="widget %2$s">\', 
        \'after_widget\'  => \'</div>\', 
        \'before_title\'  => \'<h3>\', 
        \'after_title\'   => \'</h3>\' 
    ) 
);
这是我用过但没有成功的钩子。

add_action( \'woo_main_before\', \'woo_sidebar\' );
function woo_sidebar() {
if (is_woocommerce()) { 
    echo \'<div class="primary">\';
        woo_sidebar( \'filters\' );
    echo \'</div>\';
}
*更新:使用下面的代码将此小部件区域添加到所有其他小部件区域。示例:在www.lne的页脚中。网澳大利亚。

add_action( \'woo_main_before\', \'woo_sidebar\' );
function woo_sidebar() {
if (is_woocommerce()) { 
    echo \'<div class="primary">\';
    dynamic_sidebar( \'filters\' );
    echo \'</div>\';
}
}

3 个回复
最合适的回答,由SO网友:Muzza 整理而成

是的!最终找到了解决方案,更换了折旧的挂钩woo_sidbar 具有woocommerce_sidebar. 同时更换woo_sidbar 具有dynamic_sidebar.

// Add widget area above Woocommerce products

add_action(\'woocommerce_before_shop_loop\', \'woocommerce_sidebar\', 40);

function woocommerce_sidebar()
    {
    if (is_woocommerce())
        {
        echo \'<div class="filters archive-description content-container-fullwidth">\';
        dynamic_sidebar(\'filters\');
        echo \'</div>\';
        }
    }
谢谢大家的帮助。穆兹

SO网友:Subharanjan

您应该使用dynamic_sidebar 在woo主容器之前,在新创建的侧栏中弹出小部件。

add_action( \'woo_main_before\', \'woo_sidebar\' );
function woo_sidebar() {
    if (is_woocommerce()) { 
        echo \'<div class="primary">\';
        dynamic_sidebar( \'filters\' );
        echo \'</div>\';
    }
}

SO网友:Brad Dalton

This solution has been tested on a single product page using Woo Commerce.

此方法适用于子主题函数。php文件,是为自定义主题的非开发人员推荐的方法。

function wpsites_register_woo_widget() {

 register_sidebar( array(
    \'name\' => \'Before Products Widget\',
    \'id\' => \'before-products\',
    \'before_widget\' => \'<div>\',
    \'after_widget\' => \'</div>\',
) );
}

add_action( \'widgets_init\', \'wpsites_register_woo_widget\' );

add_filter( \'woo_main_before\', \'before_products_widget\', 25 );

function before_products_widget() {


        if ( is_product() && is_active_sidebar( \'before-products\' ) ) { 
        dynamic_sidebar(\'before-products\', array(
    \'before\' => \'<div class="before-products">\',
        \'after\' => \'</div>\',
) );


    }

}
更多关于Woo\'s conditional tags for Woo Commerce

您可以更改hook 和条件标记。

Note: 如果没有创建子主题,可以使用任何Woo主题函数文件的“自定义函数”部分。

结束

相关推荐

hooks & filters and variables

我是updating the codex page example for action hooks, 在游戏中完成一些可重用的功能(最初是针对这里的一些Q@WA)。但后来我遇到了一个以前没有意识到的问题:在挂接到一个函数以修改变量的输出后,我再也无法决定是要回显输出还是只返回它。The Problem: 我可以修改传递给do_action 用回调函数钩住。使用变量修改/添加的所有内容仅在回调函数中可用,但在do_action 在原始函数内部调用。很高兴:我将其修改为一个工作示例,因此您可以将其复制/粘贴