Paano Mag-redirect ng Mga User sa isang Random na Post sa WordPress

Isa sa mga bagong tampok na idinagdag namin sa aming bagong disenyo ay ang tampok na ito na tinatawag na “Galugarin” na nakikita mo nang kitang-kita sa buong aming network. Kapag nag-click ang isang gumagamit sa pindutan na ito, dadalhin sila sa isang random na post sa isang site. Dati, ginawa namin ito upang ang mga gumagamit ay dadalhin sa isang pahina na magpapakita ng isang random na post. Mayroong ilang mga isyu sa na. Ang pangunahing isa na hindi alam ng user ang aktwal na URL ng pahina. Nang ilunsad ang aming pinakabagong site List25, naisip namin na magiging cool na upang magdagdag ng isang pindutan na tinatawag na pakiramdam ko kakaiba at hayaan ang mga gumagamit mag-browse na paraan. Sa oras na ito, nagsasalita ako sa WordCamp Louisville. Ang isang kaibigan namin na hinahanap ko para sa maraming mga bagay (@ Otto42) ay nangyari na dumalo. Sa aking sesyon, isinulat ni Otto ang snippet na ito sa halip na pakinggan ang aking mensahe (tulad ng talagang kailangan niya upang matutunan ito). Mahabang mahaba ang kuwento, sa artikulong ito, ipapakita namin sa iyo kung paano i-redirect ang mga user sa isang random na post sa WordPress.

Buksan ang mga function.php ng ​​tema ng iyong tema o lumikha ng blangkong file ng plugin at i-paste ang sumusunod na code:

add_action ('init', 'random_add_rewrite');
 function random_add_rewrite () {
        global $ wp;
        $ wp-> add_query_var ('random');
        add_rewrite_rule ('random /? $', 'index.php? random = 1', 'top');
 }

 add_action ('template_redirect', 'random_template');
 function random_template () {
        kung (get_query_var ('random') == 1) {
                $ posts = get_posts ('post_type = post & orderby = rand & numberposts = 1');
                foreach ($ posts bilang $ post) {
                        $ link = get_permalink ($ post);
                }
                wp_redirect ($ link, 307);
                lumabas;
        }
 } 

Iyon lang at tapos ka na. Ngayon ay lumikha ng isang pindutan na naka-link sa yourdomain.com/random/ at ang snippet sa itaas ay mag-aalaga sa iba.

Paliwanag ng snippet:

Ang unang bahagi ng snippet ay nagdaragdag ng variable ng query Random. Pagkatapos ay gumagamit ito template_redirect hook sa WordPress at sabihin kung ang variable na random ay naroon, pagkatapos ay makakuha ng isang post mula sa uri ng post na “Mag-post” nang random. Pagkatapos nito ay isang simpleng pag-redirect ng 307.

Ang dahilan kung bakit ang snippet ay gumagamit ng 307 redirect ay dahil ito ay pansamantalang pag-redirect. Ang mga browser ay kadalasang naka-cache ng 302 na pag-redirect na kilalang kilala para sa pansamantalang pag-redirect.

Ilang mga bugs na pinatakbo namin sa:

Kung gumagamit ka ng W3 Total Cache at mayroon kang pag-cache ng database, kailangan mong idagdag ang sumusunod na mga panuntunan sa listahan ng pagbubukod.

/ random /
/index.php?random=1

Kung gumagamit ka ng WordPress SEO plugin ni Yoast, huwag mong gamitin ang checkbox na Redirect pangit na URL sa lugar ng permalinks kung hindi man gagana ang code na ito.

Ngayon ay maaari kang lumikha ng isang maliit na pindutan ng Explore tulad ng mayroon kami sa aming site.