WordPress: Creeu barres laterals automàticament per a cada categoria
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 en què he monetitzat el lloc... aquí estan de més a menys lucratius:
- Patrocinis directes d'empreses col·laboradores. Treballem en estratègies col·lectives que incorporen tot, des de seminaris web fins a compartir a les xarxes socials per promocionar els seus esdeveniments, productes i/o serveis.
- Comercialització de l'afiliat des d'una sèrie de plataformes d'afiliats. Escolto i identifico les empreses, m'asseguro que tenen bona reputació i comparteixo articles específics que escric o anuncis que proporcionen.
- Màrqueting de recursos d'una parella que allibera esdeveniments relacionats amb el màrqueting, estudis de casos i llibres blancs.
- Publicitat en pancarta de Google on els anuncis rellevants es distribueixen automàticament a través de la meva plantilla i contingut.
Barres laterals de WordPress
Amb el màrqueting d'afiliació que proporcionava uns ingressos decents, vaig decidir que volia destacar anunciants molt específics en funció de la categoria del lloc, així que volia crear les barres laterals de manera dinàmica sense haver de codificar 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 algun codi específic al fitxer functions.php fitxer del tema del meu fill. Afortunadament, vaig descobrir que algú ja havia escrit gairebé tot el que necessitava: Creeu barres laterals amb widgets per a cada categoria a WordPress. Només volia alguns controls addicionals sobre quines categories vull 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 la varietat d'arguments per recuperar categories, puc incloure i excloure totes les categories que vull orientar. Dins de cada declaració, puc modificar i fer coincidir el disseny amb el format general de la barra lateral del meu lloc de WordPress.
A més, al meu functions.php, vull afegir una funció per veure si existeix una barra lateral i hi ha afegit un widget:
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;
}
Aleshores, dins del meu tema sidebar fitxer de plantilla, afegeixo codi per mostrar dinàmicament l'àrea si la barra lateral està registrada i té 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 laterals de WordPress per a cada categoria
El resultat és exactament el que volia:
Ara, independentment de si afegeixo, edito o suprimo categories... les meves àrees de la barra lateral estaran sempre actualitzades!