WordPress: Creeu barres laterals automàticament per a cada categoria

Funció per registrar barres laterals per a cada categoria de WordPress

He estat simplificant aquest lloc per millorar els temps de velocitat i intentar monetitzar millor el lloc sense irritar els meus lectors. Hi ha diverses maneres d’obtenir ingressos del lloc ... aquí són de més a menys lucratius:

  • Patrocinis directes d’empreses col·laboradores. Treballem en estratègies col·lectives que incorporen des de seminaris web fins a recursos compartits a les xarxes socials per promocionar els seus esdeveniments, productes i / o serveis.
  • Comercialització de l'afiliat d'una gran varietat de plataformes afiliades. Busco i identifico les empreses, m'asseguro que tenen bona reputació i comparteixo articles específics que escric o anuncis que ofereixen.
  • Màrqueting de recursos d’un soci que allibera esdeveniments relacionats amb el màrqueting, estudis de casos i llibres blancs.
  • Publicitat en pancarta de Google, on els anuncis rellevants es dispersen automàticament a través de la meva plantilla i el meu contingut.

Barres laterals de WordPress

Amb el màrqueting d'afiliació que proporcionava uns ingressos dignes, vaig decidir que volia destacar anunciants molt específics en funció de la categoria del lloc, de manera que volia crear dinàmicament les barres laterals sense haver de codificar de manera dura cada barra lateral del lloc. D'aquesta manera, si afegeixo una categoria, la barra lateral apareix automàticament a la meva àrea de widgets i puc afegir un anunci.

Per fer-ho, necessitava un codi específic al fitxer functions.php arxiu del tema del meu fill. Afortunadament, vaig trobar que algú ja havia escrit gairebé tot el que necessitava: Creeu barres laterals widget per a cada categoria a WordPress. Només volia alguns controls addicionals sobre quines categories potser voldria mostrar les barres laterals.

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

Amb el conjunt d'arguments per recuperar categories, puc incloure i excloure qualsevol categoria a la qual vulgui orientar-se. Dins de la declaració de foreach, puc modificar i fer coincidir el disseny amb el format de la barra lateral del lloc WordPress general.

A més, a la meva functions.php, Vull afegir una funció per veure si existeix una barra lateral i hi ha afegit un giny:

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

Després, dins del meu tema sidebar fitxer de plantilla, afegeixo codi per mostrar dinàmicament l'àrea si la barra lateral està registrada i hi té un giny.

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

Barres laterals de WordPress per a cada categoria

El resultat és exactament el que volia:

Barres laterals de widgets de WordPress per a cada categoria

Ara, independentment de si afegeixo, edito o elimino categories ... les meves àrees de la barra lateral estaran sempre actualitzades.

Què et sembla?

Aquest lloc utilitza Akismet per reduir el correu no desitjat. Esbrineu com es processa el vostre comentari.