Το WordPress Rewrite API

WordPress έχει ένα πραγματικά χρήσιμο API που ονομάζεται «το επανεγγραφή API«. Υποθέτω ότι έχουν ήδη “rewriting url”, αυτή είναι η διαδικασία που κάνει τις διευθύνσεις URL πιο ευανάγνωστες. Για παράδειγμα, μια διεύθυνση URL γραμμένη όπως αυτό http://mysite.com/?page=12&category=12&author=47 δεν είναι τόσο όμορφη. Είναι δύσκολο να το θυμόμαστε και οι μηχανές αναζήτησης δεν τους αρέσουν τόσο πολύ. Γι ‘αυτό σχεδόν κάθε CMS έχει μια ενσωματωμένη συνάρτηση που “ξαναγράφει” ζητά να τα κάνει να μοιάζουν με αυτό: http://mysite.com/category/business/finance.


Το API επανεγγραφής και η κλάση WP_Rewrite

Μέσα στο WordPress, αυτή η διαδικασία είναι επίσης γνωστή ως δομή μόνιμων συνδέσμων. Όταν αλλάζετε από την προεπιλεγμένη δομή μόνιμου συνδέσμου σε μια προσαρμοσμένη δομή ενεργοποιείτε αυτόματα το API επανεγγραφής. Αυτό είναι πλήρως αυτόματο. Αλλά μερικές φορές πρέπει να δημιουργήσετε τους δικούς σας προσαρμοσμένους κανόνες επανεγγραφής.

Σε αυτήν την ανάρτηση, πρόκειται να δημιουργήσουμε απλές λειτουργίες για να δημιουργήσουμε έναν απλό προσαρμοσμένο κανόνα επανεγγραφής. Ας πούμε ότι θέλουμε να λάβουμε μια τιμή παραπομπής, κάτι που ισοδυναμεί με $ _GET [«referrer»].

Εάν ρίξουμε μια ματιά στο Codex, μπορούμε να δούμε στη σελίδα επανεγγραφής του API ότι αυτό το API έχει 6 ενσωματωμένες συναρτήσεις. Η πιο συνηθισμένη χρήση της επανεγγραφής είναι η χρήση αυτών των λειτουργιών, υπάρχουν πολλά μαθήματα σχετικά με αυτό, γι ‘αυτό θα χρησιμοποιήσω φίλτρα αντί για συναρτήσεις. Επειδή ναι, το API επανεγγραφής μπορεί επίσης να χρησιμοποιηθεί με φίλτρα! Αυτά τα φίλτρα παρατίθενται στο WP_Rewrite τάξη Σελίδα Codex.

Προσθήκη νέας ερώτησης Var

Για να ξεκινήσουμε, πρέπει να δημιουργήσουμε μια συνάρτηση που θα πει στο WordPress ότι έχει οριστεί ένας νέος κανόνας επανεγγραφής. Αυτή είναι η δουλειά του add_rewrite_rule () και add_rewrite_tag ()  συναρτήσεις, αλλά μπορείτε επίσης να το κάνετε χρησιμοποιώντας το query_vars και το rewrite_rules_array φίλτρα. Για να γίνει αυτό, πρέπει να δημιουργήσουμε δύο λειτουργίες και δύο φίλτρα. Η πρώτη συνάρτηση θα προσθέσει απλώς μια νέα μεταβλητή στο φίλτρο query_vars και η δεύτερη θα καταγράψει αυτήν τη νέα μεταβλητή στους παγκόσμιους κανόνες επανεγγραφής:

/ *
|--------------------------------------------------------------------------
| Ξεκινήστε να ξαναγράψετε. Δείγμα: http://mysite.com/referrer/remi
|--------------------------------------------------------------------------
* /

// Καταχωρήστε ένα νέο var
συνάρτηση rc_add_query_vars ($ vars) {
$ vars [] = "παραπομπή"; // όνομα του var όπως φαίνεται στη διεύθυνση URL
επιστροφή $ vars;
}

// Συνδέστε τη λειτουργία μας σε query_vars
add_filter ('query_vars', 'rc_add_query_vars');

// Προσθέστε τον νέο κανόνα επανεγγραφής σε υπάρχοντες
συνάρτηση rc_add_rewrite_rules (κανόνες $) {
$ new_rules = array ('referrer / ([^ /] +) /? $' => 'index.php? referrer = $ ταιριάζει [1]');
$ Rules = $ new_rules + $ κανόνες;
επιστρέψτε τους κανόνες $;
}

// Συνδέστε τη συνάρτηση σε rewrite_rules_array
add_filter ('rewrite_rules_array', 'rc_add_rewrite_rules');

Μόλις προσθέσετε αυτόν τον κώδικα σε οποιοδήποτε από τα αρχεία plugin ή το αρχείο σας functions.php, μεταβείτε στις ρυθμίσεις> Permalinks και αποθηκεύστε τη δομή των permalinks. Αυτή η ενέργεια είναι απαραίτητη. Τώρα θα πρέπει να έχετε πρόσβαση στον ιστότοπό σας με αυτό το είδος ή διεύθυνση url: http://mysite.com/referrer/name-name. Εάν θέλετε να ανακατευθυνθείτε σε μια συγκεκριμένη σελίδα, αλλάξτε το index.php? Referrer = $ match [1] κατά index.php? Pagename = my-page & referrer = $ match [1] όπου “my-page” είναι η σελίδα που θα είναι ανακατευθύνθηκε σε γυμνοσάλιαγκα.

Ανάκτηση της μεταβλητής τιμής

Τώρα που ο κανόνας επανεγγραφής έχει οριστεί, ίσως θελήσετε να αποκτήσετε πρόσβαση στη μεταβλητή τιμή. Αλλά αν κάνετε ένα απλό $ _GET [«referrer»], δεν θα λάβετε καμία αξία. Για να ανακτήσετε τις τιμές της διεύθυνσης URL, πρέπει να συνδέσετε μια συνάρτηση με το φίλτρο “template_redirect”. Η σύνδεση με το φίλτρο “init” είναι πολύ νωρίς. Στη συνέχεια, μπορείτε να αποκτήσετε πρόσβαση στις απαιτούμενες μεταβλητές μέσω του αντικειμένου $ wp_query. Ακολουθεί ένα γρήγορο δείγμα για το πώς να το κάνετε:

// Ανάκτηση διεύθυνσης URL var
συνάρτηση rc_get_my_vars () {
παγκόσμιο $ wp_query;

εάν (isset ($ wp_query-> query_vars ['referrer'])) {
$ referrer = get_query_var ('referrer');
}
}

// Συνδέστε τη συνάρτηση στο template_redirect
add_action ('template_redirect', 'rc_get_my_vars');

Μπορείτε στη συνέχεια να επαναλάβετε την τιμή $ referer ή να τη χρησιμοποιήσετε όπως θα είχε κάνει με μια κανονική μεταβλητή GET.

Μπορείτε φυσικά να τροποποιήσετε τη χρήση περισσότερων από μία μεταβλητών:

// σε rc_add_query_vars ()
$ vars [] = "παραπομπή";
$ vars [] = "καμπάνια";

// σε rc_add_rewrite_rules ()
$ new_rules = array ('referrer / ([^ /] +) / ([^ /] +) /? $' => 'index.php? pagename = my-page & referrer = $ match [1] & campaign = $ ταιριάζει [ 2] ');

Μην ξεχνάτε ότι χρειάζεστε τη λειτουργική μονάδα PH_ mod_rewrite για να χρησιμοποιήσετε την επανεγγραφή url.

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map