WordPress: créez automatiquement des barres latérales pour chaque catégorie

Fonction pour enregistrer les barres latérales pour chaque catégorie WordPress

J'ai simplifié ce site pour améliorer les délais et tenter de mieux monétiser le site sans irriter mes lecteurs. Il y a plusieurs façons de monétiser le site ... les voici du plus au moins lucratif:

  • Commandites directes des entreprises partenaires. Nous travaillons sur des stratégies collectives qui intègrent tout, des webinaires aux partages sur les réseaux sociaux pour promouvoir leurs événements, produits et / ou services.
  • Le marketing d'affiliation à partir d'un éventail de plates-formes d'affiliation. Je parcourt et identifie les entreprises, je m'assure qu'elles sont réputées et je partage des articles spécifiques que j'écris ou des publicités qu'elles fournissent.
  • Marketing des ressources d'un partenaire qui libère événements liés au marketing, études de cas et livres blancs.
  • Bannière publicitaire de Google où les annonces pertinentes sont automatiquement dispersées dans mon modèle et mon contenu.

Barres latérales WordPress

Le marketing d'affiliation fournissant des revenus décents, j'ai décidé que je voulais mettre en évidence des annonceurs très spécifiques en fonction de la catégorie du site, donc je voulais créer dynamiquement les barres latérales sans avoir à coder en dur chaque barre latérale sur le site. De cette façon, si j'ajoute une catégorie - la barre latérale apparaît automatiquement dans ma zone Widget et je peux ajouter une publicité.

Pour ce faire, j'avais besoin d'un code spécifique dans le functions.php fichier de mon thème enfant. Heureusement, j'ai trouvé que quelqu'un avait déjà écrit presque tout ce dont j'avais besoin: Créez des barres latérales widgetisées pour chaque catégorie dans WordPress. Je voulais juste quelques contrôles supplémentaires sur les catégories dans lesquelles je souhaite afficher les barres latérales.

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

Avec le tableau d'arguments pour récupérer des catégories, je peux inclure et exclure toutes les catégories que je souhaite cibler. Dans la déclaration foreach, je peux modifier et faire correspondre la mise en page à la mise en forme globale de la barre latérale de mon site WordPress.

De plus, dans mon functions.php, Je veux ajouter une fonction pour voir si une barre latérale existe et a un widget ajouté:

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

Ensuite, dans mon thème sidebar template, j'ajoute du code pour afficher dynamiquement la zone si la barre latérale est enregistrée et contient un widget.

$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 latérales WordPress pour chaque catégorie

Le résultat est exactement ce que je voulais:

Barres latérales du widget WordPress pour chaque catégorie

Maintenant, que j'ajoute, modifie ou supprime des catégories… mes zones de la barre latérale seront toujours à jour!

Que pensez-vous?

Ce site utilise Akismet pour réduire les spams. Découvrez comment sont traitées les données de vos commentaires..