подготовить и отобразить область виджета с пользовательским заголовком через php - PullRequest
0 голосов
/ 27 марта 2020

так в моих функциях. 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 новичок. заранее спасибо.

Ответы [ 2 ]

0 голосов
/ 28 марта 2020

Вы добавили <?php do_action('before') ?> в index.php?

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

0 голосов
/ 27 марта 2020

Всего несколько ошибок. Ниже приведены два примера ... первый исправляет ошибки в вашем коде, а второй - просто еще один способ написать то же самое, что я сделал в исправлении:

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

Надеюсь, это поможет!

...