WordPress: Δημιουργήστε αυτόματα πλευρικές γραμμές για κάθε κατηγορία
Απλοποίησα αυτόν τον ιστότοπο για να βελτιώσω τους χρόνους ταχύτητας και να προσπαθήσω να δημιουργήσω έσοδα από τον ιστότοπο καλύτερα χωρίς να ενοχλήσω τους αναγνώστες μου. Υπάρχουν πολλοί τρόποι με τους οποίους έχω δημιουργήσει έσοδα από τον ιστότοπο… εδώ είναι από τους περισσότερους έως τους λιγότερο επικερδείς:
- Άμεσες χορηγίες από συνεργαζόμενες εταιρείες. Εργαζόμαστε σε συλλογικές στρατηγικές που ενσωματώνουν τα πάντα, από διαδικτυακά σενάρια έως κοινόχρηστα μέσα κοινωνικής δικτύωσης για την προώθηση των εκδηλώσεων, των προϊόντων και / ή των υπηρεσιών τους.
- Μάρκετινγκ θυγατρικών από μια σειρά από πλατφόρμες θυγατρικών. Εξετάζω και αναγνωρίζω τις εταιρείες, διασφαλίζω ότι είναι αξιόπιστες και μοιράζομαι συγκεκριμένα άρθρα που γράφω ή διαφημίσεις που παρέχουν.
- Μάρκετινγκ πόρων από έναν συνεργάτη που απελευθερώνει εκδηλώσεις που σχετίζονται με το μάρκετινγκ, μελέτες περιπτώσεων και λευκές βίβλους.
- Διαφήμιση banner από την Google όπου οι σχετικές διαφημίσεις διασκορπίζονται αυτόματα μέσω του προτύπου και του περιεχομένου μου.
Sidebars του WordPress
Με το μάρκετινγκ συνεργατών που παρέχει κάποια αξιοπρεπή έσοδα, αποφάσισα ότι ήθελα να επισημάνω πολύ συγκεκριμένους διαφημιζόμενους με βάση την κατηγορία του ιστότοπου, οπότε ήθελα να δημιουργήσω δυναμικά τις πλαϊνές μπάρες χωρίς να χρειάζεται να κάνω σκληρό κώδικα κάθε πλευρικής γραμμής στον ιστότοπο. Με αυτόν τον τρόπο, αν προσθέσω μια κατηγορία - η πλευρική γραμμή εμφανίζεται αυτόματα στην περιοχή Widget και μπορώ να προσθέσω μια διαφήμιση.
Για να το κάνω αυτό, χρειαζόμουν έναν συγκεκριμένο κωδικό στο functions.php αρχείο του παιδικού μου θέματος. Ευτυχώς, βρήκα ότι κάποιος είχε ήδη γράψει σχεδόν όλα όσα χρειαζόμουν: Δημιουργήστε Widgetized Sidebars για κάθε κατηγορία στο WordPress. Απλώς ήθελα κάποια πρόσθετα στοιχεία ελέγχου σε ποιες κατηγορίες θα ήθελα να εμφανίζονται οι πλευρικές γραμμές.
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' );
Με τη σειρά ορισμάτων για την ανάκτηση κατηγοριών, μπορώ να συμπεριλάβω και να αποκλείσω τυχόν κατηγορίες που θέλω να στοχεύσω. Μέσα στη δήλωση foreach, μπορώ να τροποποιήσω και να ταιριάξω τη διάταξη με τη συνολική μορφοποίηση της πλαϊνής γραμμής του ιστότοπού μου στο WordPress.
Επιπλέον, στο μου functions.php, Θέλω να προσθέσω μια συνάρτηση για να δω αν υπάρχει πλευρική γραμμή και έχει προστεθεί 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;
}
Τότε, μέσα στο θέμα μου sidebar αρχείο προτύπου, προσθέτω κώδικα για να εμφανίσω δυναμικά την περιοχή εάν η πλαϊνή γραμμή είναι καταχωρημένη και έχει 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);
}
}
WordPress Sidebars για κάθε κατηγορία
Το αποτέλεσμα είναι ακριβώς αυτό που ήθελα:
Τώρα, ανεξάρτητα από το αν προσθέτω, επεξεργάζομαι ή διαγράφω κατηγορίες… οι περιοχές πλευρικής γραμμής μου θα είναι πάντα ενημερωμένες!