Wordpress Advanced Tips #1 - Wordpress Widget Editing

Μια περιοχή για το WordPress, αυτή την δημοφιλή δωρεάν πλατφόρμα για blogging

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
Άβαταρ μέλους
Basilakis
PHP Moderator
Δημοσιεύσεις: 8575
Εγγραφή: 17 Νοέμ 2003 13:03
Τοποθεσία: Womans' Brain
Επικοινωνία:

Wordpress Advanced Tips #1 - Wordpress Widget Editing

Δημοσίευση από Basilakis » 27 Οκτ 2009 18:48

Σε μία απο τις σελίδες που προγραμματίζω με τη χρήση του wordpress βρέθηκα στο εξής θέμα

Στο footer μου, έχω 3 στήλες.

Η πρώτη, κάνει Query απο μία κατηγορία
Η δεύτερη είναι ένα widget με τα last posts
Η τρίτη, έχει query απο μία άλλη κατηγορία.

Αφού λοιπόν, έχω 2 κατηγορίες που κάνουν fetch τα last posts, δεξιά και αριστερά, ήθελα το widget στην μέση να μην περιέχει τα last posts από αυτές τις κατηγορίες.

Υπήρχαν 2 λύσεις...

Η πρώτη, να φτιάξω ένα query ακόμη που θα τις έκανα exclude. Αλλά αυτό θα ανέβαζε το loading time του wordpress και δεν υπάρχει και λόγος να γίνει.

Η δεύτερη την οποία ακολούθησα,

Άνοιξα το αρχείο, wp-include/default-widgets.php και βρήκα τον κώδικα

Κώδικας: Επιλογή όλων

/**
 * Recent_Posts widget class
 *
 * @since 2.8.0
 */
Απο το CODEX ξέρουμε, πως υπάρχει η ιδιότητα να κάνουμε exclude κάποιες κατηγορίες μέσα απο function array δείτε εδώ πως

Κώδικας: Επιλογή όλων

query_posts(array('category__not_in' => array(2,6)));
Χρησιμοποιώντας λοιπόν το codex πάμε περίπου στην γραμμή, 545

Κώδικας: Επιλογή όλων

		$r = new WP_Query(array('showposts' => $number, 'nopaging' => 0, 'post_status' => 'publish', 'caller_get_posts' => 1));
Βλέπουμε πως υπάρχει είδη το array που κάνει Query τα posts...

Προσθέτουμε λοιπόν εμείς λοιπόν το εξής

Κώδικας: Επιλογή όλων

		$r = new WP_Query(array('showposts' => $number, 'nopaging' => 0, 'post_status' => 'publish', 'caller_get_posts' => 1, 'category__not_in' => array(55,23)));
Όπου,

Κώδικας: Επιλογή όλων

'category__not_in' => array(55,23)
array(55,23) είναι οι αριθμοί από τις κατηγορίες που κάνουμε exclude, απο το widget!

ΠΡΟΣΟΧΗ: Επειδή αυτά είναι advanced tips, και μπαίνουμε στη διαδικασία να πειράξουμε κομμάτια απο το CORE CODE του wordpress, θα ήταν καλό να κρατάμε ένα backup.

Άβαταρ μέλους
tsiger
Honorary Member
Δημοσιεύσεις: 1431
Εγγραφή: 11 Νοέμ 2002 13:40
Τοποθεσία: Thessaloniki Observation Center
Επικοινωνία:

Wordpress Advanced Tips #1 - Wordpress Widget Editing

Δημοσίευση από tsiger » 28 Οκτ 2009 14:12

Μα έτσι κι αλλιώς το widget θα ετοιμάσει ένα ακόμη sql query οπότε αν δε θες να πειράξεις το core (που δε το θες) απλά χρησιμοποιείς το PHP Code widget (http://wordpress.org/extend/plugins/php-code-widget/) το οποίο είναι σαν το text widget με τη διαφορά οτι επιτρέπει php κώδικα.

Έτσι:

Κώδικας: Επιλογή όλων

$someposts = new WP_Query();
$someposts->query('cat=-55,-23,');

while loop
show some stuff
endwhile

Απάντηση

Επιστροφή στο “WordPress γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 1 επισκέπτης