WordPress: Opret sidebjælker automatisk for hver kategori

Funktion til registrering af sidepaneler for hver WordPress-kategori

Jeg har forenklet dette websted for at forbedre hastighedstiderne og forsøge at tjene penge på webstedet bedre uden at irritere mine læsere. Der er flere måder, jeg har tjent penge på siden på ... her er de fra mest til mindst lukrative:

  • Direkte sponsorater fra partnerfirmaer. Vi arbejder på kollektive strategier, der inkorporerer alt fra webinarer til aktier på sociale medier for at promovere deres begivenheder, produkter og / eller tjenester.
  • Affiliate marketing fra en række tilknyttede platforme. Jeg gennemsøger og identificerer virksomhederne, sikrer, at de er velrenommerede, og deler specifikke artikler, jeg skriver eller annoncer, som de leverer.
  • Ressource marketing fra en partner, der frigiver marketingrelaterede begivenheder, casestudier og hvidbøger.
  • Bannerannoncering fra Google, hvor relevante annoncer automatisk spredes gennem min skabelon og indhold.

WordPress sidebjælker

Da affiliate marketing leverede en anstændig indtjening, besluttede jeg, at jeg ville spotte meget specifikke annoncører baseret på kategorien på webstedet, så jeg ville dynamisk oprette sidebjælkerne uden at skulle hårdkode hvert sidebjælke på webstedet. På denne måde, hvis jeg tilføjer en kategori - vises sidebjælken automatisk i mit Widget-område, og jeg kan tilføje en annonce.

For at gøre dette havde jeg brug for en bestemt kode i functions.php fil af mit barns tema. Heldigvis fandt jeg ud af, at nogen allerede havde skrevet næsten alt, hvad jeg havde brug for: Opret widgetiserede sidebjælker for hver kategori i WordPress. Jeg ville bare have nogle yderligere kontroller over, hvilke kategorier jeg måske vil vise sidebjælkerne i.

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' );

Med en række argumenter til hentning af kategorier kan jeg inkludere og ekskludere alle kategorier, som jeg ønsker at målrette mod. Inden foreach-erklæringen kan jeg ændre og matche layoutet til mit overordnede WordPress-websteds sidefeltformatering.

Derudover i min functions.php, Jeg vil tilføje en funktion for at se, om der findes en sidebjælke og har en widget tilføjet til den:

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

Derefter inden for mine temaer sidebar skabelonfil, tilføjer jeg kode for dynamisk at vise området, hvis sidebjælken er registreret og har en widget i den.

$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-sidepaneler til hver kategori

Resultatet er præcis, hvad jeg ønskede:

WordPress-widget-sidebjælker for hver kategori

Nu, uanset om jeg tilføjer, redigerer eller sletter kategorier ... vil mine sidebjælkeområder altid være opdaterede!

Hvad mener du?

Dette websted bruger Akismet til at reducere spam. Lær, hvordan dine kommentardata behandles.