WordPress: Opprett sidefelt automatisk for hver kategori

Funksjon for å registrere sidefelt for hver WordPress-kategori

Jeg har forenklet dette nettstedet for å forbedre hastighetstider og for å forsøke å tjene penger på nettstedet bedre uten å irritere leserne mine. Det er flere måter jeg har tjent penger på nettstedet på ... her er de fra mest til minst innbringende:

  • Direkte sponsing fra partnerbedrifter. Vi jobber med kollektive strategier som inkluderer alt fra webinarer til sosiale medier for å markedsføre deres arrangementer, produkter og / eller tjenester.
  • Affiliate markedsføring fra en rekke tilknyttede plattformer. Jeg søker og identifiserer selskapene, sørger for at de er anerkjente, og deler spesifikke artikler jeg skriver eller annonser de gir.
  • Ressursmarkedsføring fra en partner som frigjør markedsføringsrelaterte arrangementer, casestudier og whitepapers.
  • Bannerannonsering fra Google der relevante annonser spres automatisk gjennom malen og innholdet mitt.

WordPress-sidefelt

Med tilknyttet markedsføring som ga anstendig inntekt, bestemte jeg meg for at jeg ønsket å rette søkelys på veldig spesifikke annonsører basert på kategorien på nettstedet, så jeg ønsket å opprette sidelinjene dynamisk uten å måtte hardkode hvert sidefelt på nettstedet. På denne måten, hvis jeg legger til en kategori - vises sidefeltet automatisk i Widget-området mitt, og jeg kan legge til en annonse.

For å gjøre dette trengte jeg noen spesifikk kode i functions.php fil av barnetemaet mitt. Heldigvis fant jeg ut at noen allerede hadde skrevet nesten alt jeg trengte: Lag widgetiserte sidefelt for hver kategori i WordPress. Jeg ville bare ha noen ekstra kontroller over hvilke kategorier jeg måtte ønske å vise sidelinjene 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 rekke argumenter for å hente kategorier, kan jeg inkludere og ekskludere alle kategorier som jeg ønsker å målrette mot. Innenfor foreach-uttalelsen kan jeg endre og matche oppsettet til det generelle WordPress-sidens sidefeltformatering.

I tillegg, i min functions.php, Jeg vil legge til en funksjon for å se om det finnes en sidefelt og har en widget lagt til:

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

Så, innenfor temaene mine sidebar malfil legger jeg til kode for dynamisk å vise området hvis sidefeltet er registrert og har en widget i seg.

$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-sidefelt for hver kategori

Resultatet er akkurat det jeg ønsket:

WordPress-widget-sidefelt for hver kategori

Nå, uansett om jeg legger til, redigerer eller sletter kategorier ... sidefeltområdene mine vil alltid være oppdatert!

Hva tror du?

Dette nettstedet bruker Akismet for å redusere spam. Lær hvordan kommentaren din behandles.