Как создать пользовательскую область виджета и сохранить содержимое в нижнем колонтитуле?

Я хочу создать пользовательскую область виджетов и сохранить ее содержимое в нижнем колонтитуле.

Я делаю это как часть плагина, который я создаю. Итак, в основном файле плагина я попробовал:

 if ( function_exists('register_sidebar') )
 register_sidebar(array(
'name' => 'Name of Widgetized Area',
'before_widget' => '<div class = "widgetizedArea">',
'after_widget' => '</div>',
'before_title' => '<h3>',
'after_title' => '</h3>',
)
);

но он не показывает область виджетов в админке WordPress Внешний вид -> Виджеты.

Это первая проблема... Другая проблема: когда я выясню, как добавить область виджетов, то как реализовать, чтобы виджет, хранящийся в этой пользовательской области виджетов, помещался в нижний колонтитул? Я думаю добавить это в файл footer.php темы, которую я использую:

<?php if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar("Name of 
Widgetized Area") ) : ?>
<?php endif;?>

Я не уверен, что это правильно... и еще одна проблема: я добавляю это непосредственно в footer.php темы, которую использую, поэтому это означает, что плагин не будет работать, если установлена ​​другая тема и активирован. Должен ли я написать функцию для поиска файла footer.php, а затем написать это в нем, или я должен сделать что-то еще. А что если в теме нет файла footer.php?


person Community    schedule 22.10.2018    source источник


Ответы (1)


Существует два способа добавления виджетов: 1) с помощью плагина Виджеты на странице 2) вы можете добавить виджет с помощью кода.

1) Вы можете напрямую установить плагин Виджеты на странице. Там вы можете легко создать плагин. Я буду отображаться в виджетах, и он сгенерирует шорткод, который вы можете поместить в footer.php или любой другой файл, где вы хотите отобразить свой виджет.

2) Вы можете создать область виджета, используя приведенный ниже код: Добавьте этот код в свою тему funtion.php

 function arphabet_widgets_init() {

    register_sidebar( array(
        'name'          => 'Home right sidebar',
        'id'            => 'home_right_1',
        'before_widget' => '<div>',
        'after_widget'  => '</div>',
        'before_title'  => '<h2 class="rounded">',
        'after_title'   => '</h2>',
    ) );
}
add_action( 'widgets_init', 'arphabet_widgets_init' );

а затем добавьте этот код в свой footer.php

<?php if ( is_active_sidebar( 'home_right_1' ) ) : ?>
    <div id="primary-sidebar" class="primary-sidebar widget-area" role="complementary">
        <?php dynamic_sidebar( 'home_right_1' ); ?>
    </div><!-- #primary-sidebar -->
<?php endif; ?>

Это функция, которая выводит виджет:

<?php dynamic_sidebar( 'home_right_1' ); ?>

Надеюсь, что это поможет вам..

person Arti Rana    schedule 22.10.2018
comment
Вы использовали плагин, который я предложил? - person Arti Rana; 22.10.2018
comment
Плагин в порядке, но у меня есть задача реализовать его в нашем собственном плагине, который мы создаем. - person ; 22.10.2018
comment
Позвольте мне проверить, можете ли вы предоставить мне ссылку и подробности. - person Arti Rana; 22.10.2018
comment
Область виджета теперь отображается, но когда я добавляю, например, виджет календаря, он не отображается в нижнем колонтитуле (я добавил код, который вы предоставили для footer.php). Он просто добавляет пустое место в нижний колонтитул, когда я посещаю мой сайт. - person ; 22.10.2018
comment
Это все локально... Я могу выслать вам плагин, если хотите. - person ; 22.10.2018
comment
да дайте мне плагин, чтобы я мог проверить. Спасибо :) - person Arti Rana; 22.10.2018
comment
Теперь это работает... Типа... Просто нужно выяснить, как это сделать, не добавляя код в footer.php, но вместо этого плагин должен делать это автоматически в любой теме. Спасибо. - person ; 22.10.2018
comment
Давайте продолжим это обсуждение в чате. - person Arti Rana; 22.10.2018