Αρκετά widgets και plugins ζητούν το ID του εκάστοτε άρθρου ή των άρθρων που θέλετε να εμφανίσει ή να χρησιμοποιήσει.
Με μια πρώτη ματιά, το να το βρείς γίνεται μια σπαζοκεφαλιά που πρέπει να λύσει κανείς, αφού δεν υπάρχει σε κάποιο εμφανές σημείο.
Λύσεις για αυτό τον “γρίφο” υπάρχουν αρκετές, και παρακάτω θα δούμε πως μπορεί να το βρει κανείς μέσω του post title, του post slug, του post URL, του meta key, των category/tag ID, κ.ά.
1. Στο URL του post όταν κάνουμε επεξεργασία
Αυτή είναι η πιο απλή και άμεση μέθοδος. Πολύ απλά όταν πάμε να κάνουμε επεξεργασία του άρθρου το ID είναι μέσα στο URL.
Στην ουσία δεν χρειάζεται καν να ανοίξουμε την επεξεργασία του άρθρου. Αν βάλουμε τον κέρσορα πάνω από τον σύνδεσμο της επεξεργασίας (edit) ή πάνω από τον τίτλο του άρθρου (post title) μέσα στο διαχειριστικό μενού και παρατηρήσουμε το browser status bar, στο κάτω μέρος του παραθύρου, θα δούμε το ID.
2. Στο URL του αρθρου χωρίς κάποιο Custom Permalink Structure
Αν έχετε αφήσει τις επιλογές για τα permalinks (στο Settings > Permalinks ή Ρυθμίσεις > Μόνιμοι σύνδεσμοι ) σε Plain ή “απλή”, τότε θα εμφανίζεται η παράμετρος p στο URL, η οποία έχει την τιμή του ID του άρθρου.
Αυτός ο τρόπος είναι σίγουρα χρήσιμος για τους αρχάριους.
3. Προσθήκη του Post ID σε στήλη μέσα στον πίνακα WordPress Posts Table
Αν δουλεύετε πολύ συχνά με τα IDs τότε θα σας αρέσει πάρα πολύ το παρακάτω.
Το παρακάτω screenahot δείχνει το πόσο βολικό και χρήσιμο είναι.
Το μόνο που χρειάζεται να κάνετε είναι να προσθέσετε τον παρακάτω κώδικα στο functions.php του θέματος που χρησιμοποιείτε (προσοχή γιατί ένα update μπορεί να σας το διαγράψει).
1 2 3 4 5 6 7 8 9 10 11 12 13 |
function add_column( $columns ){ $columns['post_id_clmn'] = 'ID'; // $columns['Column ID'] = 'Column Title'; return $columns; } add_filter('manage_posts_columns', 'add_column', 5); //add_filter('manage_pages_columns', 'add_column', 5); // for Pages function column_content( $column, $id ){ if( $column === 'post_id_clmn') echo $id; } add_action('manage_posts_custom_column', 'column_content', 5, 2); //add_action('manage_pages_custom_column', 'column_content', 5, 2); // for Pages |
Εδώ βλέπετε πως είναι αν έχετε προσθέσει την στήλη του Post ID στο posts table. Μπορείτε να προσθέσετε την ίδια στήλη για τα Pages και όποιο άλλο custom post type.
4. To Post ID στην WordPress Database
Αν γνωρίζετε πως λειτουργούν οι MySQL βάσεις δεδομένων, τότε θα σας αρέσει αυτή η λύση.
Μπορείτε να βρείτε τα post IDs στο wp_posts table (ή {επιλεγμένο_πρόθεμα}posts table).
Για τα παρακάτω παραδείγματα χρειάζονται βασικές γνώσεις PHP, αλλά να δεν ξέρετε καλή PHP δεν σας εμποδίζει τίποτα από το να δοκιμάσετε.
5. Στο global αντικείμενο $post
Το global αντικείμενο $post περιέχει πολλά δεδομένα για το τρέχων άρθρο. Έτσι, είναι αρκετά εύκολο να βρει κανείς το ID μέσα από το αντικείμενο:
1 |
echo $post->ID; |
Κάποιες φορές όταν το χρησιμοποιήσουμε μέσα σε μία συνάρτηση (ή όταν για κάποιο λόγο δεν εμφανίζει τίποτα το παραπάνω echo) απλά προσθέστε το αντικείμενο γιατί δεν έχει γίνει κλήση του στο τρέχων περιβάλλον (scope).
1 2 |
global $post; echo $post->ID; |
6. Χρήση των συναρτήσεων get_the_id() και the_id()
Η διαφορά των δύο συναρτήσεων είναι ότι η get_the_id() επιστρέφει την τιμή του ID ενώ η the_id() την εκτυπώνει.
1 |
echo get_the_id(); |
1 |
the_id(); |
7. Βρίσκοντας το Post ID από το Post Title
Εδώ θα μιλήσουμε για μία ενσωματωμένη συνάρτηση και από την έκδοση 3.0.0 δεν δουλεύει μόνο για τα pages αλλά και για οποιοδήποτε custom post type.
Η τρίτη παράμετρος της συνάρτησης είναι ο τύπος του post, που είναι προκαθορισμένο ως page.
1 2 |
$mypost = get_page_by_title( 'Hello World', '', 'post' ); echo $mypost->ID; |
8. Το post ID από το post slug
Η συνάρτηση είναι παρόμοια με την get_page_by_title(). Αλλά αν το άρθρο έχει πατρικό άρθρο (όταν υπάρχει κάποια ιεραρχία) πρέπει να καθορίσετε και το slug του πατρικού άρθρου
π.χ. parent-post/hello-world
1 2 |
$mypost = get_page_by_path('hello-world', '', 'post'); echo $mypost->ID; |
9. Το post ID από το URL
Μια αρκετά απλή συνάρτηση, σαν όρισμα χρειάζεται να δώσετε μόνο το url:
1 |
$mypost_id = url_to_postid( 'https://www.....gr/wordpress/get-post-id.html' ); |
10. Το post ID που φαίνεται στην αρχική σελίδα
Αυτός ο τρόπος είναι μόνο για τα pages. Μπορούμε να βρούμε τα IDs των σελίδων όπως φαίνεται και παρακάτω
1 |
$frontpage_id = get_option( 'page_on_front' ); |
1 |
$blogpage_id = get_option( 'page_for_posts' ); |
11. Το post ID μέσα από το WP_Query loop
Όταν χρησιμοποιούμε το WP_Query ή κάποιο άλλο loop, είναι πάντα καλύτερος και πιο γρήγορος τρόπος για να βρούμε το αντικείμενο $post και τα περιεχόμενα του αντί για τις συναρτήσεις get_the_id(), the_id() που είδαμε και πιο πάνω.
1 2 3 4 5 |
$your_custom_query = new WP_Query( 'posts_per_page=10' ); while( $your_custom_query-have_posts() ) : $your_custom_query->the_post(); echo $your_custom_query->post->ID; // print post ID endwhile; |
12. To post ID μέσω του meta key
Υπάρχουν δύο τρόποι για να το κάνει κανείς: WP_Query ή MySQL επερώτηση.
In fact there are two ways to do it — using WP_Query or MySQL query. Here I will introduce you a function that returns a post ID or an array of post IDs that match the given meta key.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
/* * Returns matched post IDs for a meta key from database * * @param string $meta_key * * @return array Array of post IDs - if more than one post matched has this meta key * @return int Post ID - if just one post found */ function post_id_by_meta_key( $meta_key ){ global $wpdb; $ids = $wpdb->get_col( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = %s", $meta_key ) ); if( count( $ids ) > 1 ) return $ids; // return array else return $ids[0]; // return int } |
Ή μπορεί κανείς να χρησιμοποιήσει την παρακάτω συνάρτηση, που είναι παρόμοια με την πάνω, αλλά καθορίζεται και το meta value.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
/* * Returns matched post IDs for a pair of meta key and meta value from database * * @param string $meta_key * @param mixed $meta_value * * @return array|int Post ID(s) */ function post_id_by_meta_key_and_value( $meta_key, $meta_value ){ global $wpdb; $ids = $wpdb->get_col( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key = %s AND meta_value = %s", $meta_key, $meta_value ) ); $ids = $wpdb->get_col( $wpdb->prepare( "SELECT object_id FROM $wpdb->term_relationships WHERE term_taxonomy_id = %d", $term_id ) ); if( count( $ids ) > 1 ) return $ids; // return array else return $ids[0]; // return int } |
Στην ουσία, καλώντας την $wpdb μπορούμε να βρούμε τα IDs με οποιαδήποτε παράμετρο: category name, publish date, number of comments, even by comment author email, κ.ά.
Πηγές
- pagely.com – How to Find the Post ID in WordPress
- developer.wordpress.org get_the_id
- developer.wordpress.org the_id
- www.ostraining.com – Find the Page ID or Post ID in WordPress
- rudrastyh.com – 14 Ways to Get Post ID in WordPress
- bobwp.com – Where the Heck Do I Find the Post, Page or Category ID?
- reneeshupe.com – How To Locate A Page Or Post ID In Your WordPress Blog
agathan
Αποφοίτησα απο το τμήμα Εφαρμοσμένων Μαθηματικών
του Πανεπιστημίου Κρήτης. Κάτα την διάρκεια εργάστηκα στην
τεχνική υποστήριξη του τμήματος. Ακολούθησε το
μεταπτυχιακό μου, Msc In Applied Mathematics at University Of Delaware. Ύστερα δούλεψα για μερικά χρόνια σαν web developer (CMS and what not) και SEO/Google Ads engineer.
Και τώρα είμαστε στο GeekD, μια λέξη που περιγράφει όλα τα παραπάνω.
"All we have to decide is what to do with the time that is given us."
-Gandalf The Grey, JRR Tolkien
Latest posts by agathan (see all)
- Αφιλόξενος πλανήτης Αφροδίτη: θα μπορούσε να υπάρχει ζωή; - 1 Οκτωβρίου 2020
- Τα ιπτάμενα αυτοκίνητα αρχίζουν να γίνονται πραγματικότητα - 13 Σεπτεμβρίου 2020
- Η ιστορική εκτόξευση της SpaceX που θα μεταφέρει αστροναύτες στον ISS - 26 Μαΐου 2020
Αφήστε ένα σχόλιο