通过 php 添加和显示自定义 header 小部件区域

prepend and display custom header widget area via php

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

// 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 新手。提前致谢。

里面只有一些错误。下面是两个例子......第一个纠正了你代码中的错误,第二个只是另一种方式来写我在更正中所做的同样的事情:

// 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>';
    }
}

希望对您有所帮助!

您是否在 index.php 中添加了 <?php do_action('before') ?>

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