如何通过unctions.php中的钩子有条件地添加小部件

时间:2013-07-19 作者:morktron

我正在尝试只使用功能向主页添加一些小部件区域。php-这样客户端就不会在编辑页面时意外破坏短代码。

我已经注册了widget区域,可以在admin中看到它,但是除了我的测试文本在widget区域之外,没有任何内容显示在前端。

这就是我目前的情况:

<?php

add_action( \'widgets_init\', \'register_widget_area\' );
function register_widget_area() {
    // Add fox_home_news_widget to admin
    if( function_exists( \'register_sidebar\' ) ) {
        register_sidebar( array(
            \'name\' => \'Fox News\',
            \'id\' => \'fox_home_news_widget\',
    \'description\' => "Latest news widget area for homepage",
            \'before_widget\' => \'<aside class="fox-news">\',
            \'after_widget\' => \'<div class="fix"></div></aside>\',
            \'before_title\' => \'<h1 class="title">\',
            \'after_title\' => \'</h1>\',
        ));
    }
}

// add widget areas to homepage 
add_action( \'woo_post_after\', \'fox_home_news_widget\' );
function fox_home_news_widget () { 
if( is_page( 15 ) ): ?>

        <div class="twocol-one">

            <?php if ( !function_exists(\'dynamic_sidebar\') || !dynamic_sidebar(\'fox_home_news_widget\') ) ; ?>

                <p>this is a test</p>
        </div>

    <?php endif;
}

?>
非常感谢您的帮助,谢谢:)

1 个回复
SO网友:Creech

有一件事虽然离题了,但乍一看我还是注意到了,那就是模板中的php代码和div标记是以错误的方式嵌套的。它们应该像这样嵌套:

    <div class="twocol-one">
        <?php if ( !function_exists(\'dynamic_sidebar\') || !dynamic_sidebar(\'fox_home_news_widget\') ) ; ?>

            <p>this is a test</p>

        <?php endif;?>
    </div>
你错过了收场?> 在endif语句上。

结束

相关推荐

About Hooks and Filters

嗯,我很难理解动作和过滤器之间的区别。我确实在代码中使用动作,但我是一个新手,甚至连一点过滤器都不知道。我去过codex,以及NickTheGeek、BillErickson、GaryJones等的多个网站,但没有去过vein。如果你能用简单的话告诉我,并举例说明动作、过滤器和挂钩的基本内容和区别。非常感谢。