WordPress: Автоматичне створення бічних панелей для кожної категорії

Функція реєстрації бічних панелей для кожної категорії WordPress

Я спрощую цей сайт, щоб покращити швидкість та намагатись монетизувати сайт краще, не дратуючи читачів. Існує кілька способів монетизації веб-сайту ... ось вони від найбільш до найменш прибуткових:

  • Пряме спонсорство від компаній-партнерів. Ми працюємо над колективними стратегіями, які включають все, від веб-семінарів до акцій у соціальних мережах, для просування своїх подій, продуктів та / або послуг.
  • Партнерський маркетинг з масиву афілійованих платформ. Я досліджую та ідентифікую компанії, переконуюсь, що вони мають репутацію, і ділюсь конкретними статтями, які я пишу, або оголошеннями, які вони надають.
  • Ресурсний маркетинг від партнера, який звільняє маркетингові події, тематичні дослідження та технічні документи.
  • Банерна реклама від Google, де відповідні оголошення автоматично розповсюджуються за моїм шаблоном та вмістом.

Бічні панелі WordPress

З афілійованим маркетингом, який забезпечує певний гідний дохід, я вирішив, що хочу привернути увагу дуже конкретних рекламодавців на основі категорії сайту, тому я хотів динамічно створювати бічні панелі без необхідності жорсткого кодування кожної бічної панелі на сайті. Таким чином, якщо я додаю категорію - бічна панель автоматично з’являється в моєму віджеті, і я можу додати рекламу.

Для цього мені знадобився певний код у functions.php файл моєї дочірньої теми. На щастя, я виявив, що хтось уже написав майже все, що мені потрібно: Створіть віджетовані бічні панелі для кожної категорії в WordPress. Я просто хотів отримати додатковий контроль над тим, у яких категоріях я можу побачити бічні панелі.

function add_category_sidebars() {
    $args = array(
        'type'                     => 'post',
        'orderby'                  => 'name',
        'order'                    => 'ASC',
        'hide_empty'               => 1,
        'hierarchical'             => 1,
        'exclude'                  => '',
        'include'                  => '',
        'number'                   => '',
        'taxonomy'                 => 'category'
        ); 
    
    $categories = get_categories($args);

    foreach ($categories as $category) {
        if (0 == $category->parent)
            register_sidebar( array(
                'name' => $category->cat_name,
                'id' => $category->category_nicename . '-sidebar',
                'description' => 'This is the ' . $category->cat_name . ' widgetized area',
                'before_widget' => '<aside id="%1$s" class="widget %2$s">',
                'after_widget' => '</aside>',
                'before_title' => '<h3 class="widget-title">',
                'after_title' => '</h3>',
            ));
        }
}
add_action( 'widgets_init', 'add_category_sidebars' );

За допомогою масиву аргументів для отримання категорій я можу включати та виключати будь-які категорії, на які я хочу націлитись. У межах заяви foreach я можу змінювати та узгоджувати макет із форматуванням бічної панелі мого загального сайту WordPress.

Додатково, в моєму functions.php, Я хочу додати функцію, щоб побачити, чи існує бічна панель і до неї додано віджет:

function is_sidebar_active($cat_name) {
    global $wp_registered_sidebars;
    $cat_id = get_cat_ID($cat_name);
    $widgetlist = wp_get_sidebars_widgets();
    if ($widgetlist[$cat_id])
        return true;
    return false;
}

Потім, у межах моєї теми sidebar файлу шаблону, я додаю код для динамічного відображення області, якщо бічна панель зареєстрована і в ній є віджет.

$queried_object = get_queried_object();
if ($queried_object) {
    $post_id = $queried_object->ID;
}
if(is_category() || in_category($cat_name, $post_id)) {
    $sidebar_id = sanitize_title($cat_name);
    if( is_sidebar_active($sidebar_id)) {
        dynamic_sidebar($sidebar_id);
    }
}

Бічні панелі WordPress для кожної категорії

Результат - саме те, що я хотів:

Бічні панелі віджетів WordPress для кожної категорії

Тепер, незалежно від того, додаю, редагую чи видаляю категорії ... мої області бічної панелі завжди будуть оновлені!

Що ви думаєте?

Цей сайт використовує Akismet для зменшення спаму. Дізнайтеся, як обробляються ваші дані коментарів.