通过php添加并显示自定义标题小部件区域

Posted

技术标签:

【中文标题】通过php添加并显示自定义标题小部件区域【英文标题】:prepend and display custom header widget area via php 【发布时间】:2020-03-27 20:08:01 【问题描述】:

所以在我的functions.php 中,我根据主题文档在正文之前添加了一个钩子。我还创建了一个小部件区域,我想将其作为前置内容,如下所示:

// create custom header widget area
function wpb_widgets_init() 

    register_sidebar( array(
        'name'          => 'Custom Header Widget Area',
        'id'            => 'custom-header-widget',
        'before_widget' => '<div class="chw-widget">',
        'after_widget'  => '</div>',
        'before_title'  => '<h2 class="chw-title">',
        'after_title'   => '</h2>',
    ) );


add_action( 'widgets_init', 'wpb_widgets_init' );

// prepend and display custom header widget area
add_action( 'before', 'uncode_child_hook_before' );
function uncode_child_hook_before()
echo <?php

if ( is_active_sidebar( 'custom-header-widget' ) ) : ?>
    <div id="header-widget-area" class="chw-widget-area widget-area" role="complementary">
    <?php dynamic_sidebar( 'custom-header-widget' ); ?>
    </div>

<?php endif; ?>;

我的语法一定有问题——我是个 php 新手。提前致谢。

【问题讨论】:

【参考方案1】:

那里只有几个错误。下面是两个示例...第一个更正代码中的错误,第二个只是编写与我在更正中所做的相同内容的另一种方式:

// prepend and display custom header widget area
add_action( 'before', 'uncode_child_hook_before' );
function uncode_child_hook_before()
    // open if statement
    if ( is_active_sidebar( 'custom-header-widget' ) ) :

    // close php for html
    ?>
        <div id="header-widget-area" class="chw-widget-area widget-area" role="complementary">
            <?php dynamic_sidebar( 'custom-header-widget' ); ?>
        </div>

    <?php  // re open php

    // close if statement
    endif; 

或者你可以像下面这样写:

// prepend and display custom header widget area
add_action( 'before', 'uncode_child_hook_before' );
function uncode_child_hook_before()
    if ( is_active_sidebar( 'custom-header-widget' ) ) 
        echo '<div id="header-widget-area" class="chw-widget-area widget-area" role="complementary">';
            dynamic_sidebar( 'custom-header-widget' );
        echo '</div>';
    

希望这会有所帮助!

【讨论】:

【参考方案2】:

您是否在index.php 中添加了&lt;?php do_action('before') ?&gt;

https://developer.wordpress.org/reference/functions/do_action/

【讨论】:

以上是关于通过php添加并显示自定义标题小部件区域的主要内容,如果未能解决你的问题,请参考以下文章

Wordpress小部件正在管理区域中消失

php 自定义小部件区域

php 自定义小部件区域生成器

php 自定义小部件区域

php 如何创建自定义小部件区域

PHP Wordpress:自定义小部件区域