WordPress: Δημιουργήστε αυτόματα πλευρικές γραμμές για κάθε κατηγορία

Λειτουργία για την εγγραφή πλευρικών γραμμών για κάθε κατηγορία 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 για κάθε κατηγορία

Το αποτέλεσμα είναι ακριβώς αυτό που ήθελα:

Sidebars Widget WordPress για κάθε κατηγορία

Τώρα, ανεξάρτητα από το αν προσθέτω, επεξεργάζομαι ή διαγράφω κατηγορίες… οι περιοχές πλευρικής γραμμής μου θα είναι πάντα ενημερωμένες!

Ποια είναι η γνώμη σας;

Αυτός ο ιστότοπος χρησιμοποιεί το Akismet για να μειώσει το spam. Μάθετε πώς επεξεργάζονται τα δεδομένα των σχολίων σας.