15 Användbara WordPress-funktioner Alla utvecklare borde veta
WordPress är full av fantastiska funktioner för våra utvecklare att använda. Vi kan dra in postlistor ut ur den tunna luften, manipulera nästan allt om dem, ta tag på alla användare vi önskar och visa sina sociala medier i en jiffy.
Det finns dock ganska många funktioner som verkar förbises av okända skäl. Jag har kodat med WordPress i cirka 8 år nu och ibland hittar jag fortfarande något nytt! Låt oss ta en titt på några av mina Favorit förbises funktioner och lär dig hur du använder dem på vägen.
antispambot ()
Jag brukar lyfta några ögonbryn med den här, det verkar vara en av de mest väl gömda funktionerna i kodbasen.
ersätter tecken med HTML-enheter som är ett sätt att maskera e-postadresser från onda skrapor.antispambot ()
$ email = '[email protected]'; echo "Du kan kontakta mig på". antispambot ($ email). "helst".
Även om det här är ett bra tidbit, är det också ett exempel på varför vissa kritiserar WordPress - det här är en hemskt namngiven funktion. Från att läsa funktionsnamnet har du ingen aning om vad den gör.
human_time_diff ()
När jag först lärde mig om den här funktionen för ett år sedan trodde jag att det måste ha varit ett nytt tillägg som jag förbisedde i en changelog. Inte riktigt…
Denna funktion - som ger skillnaden mellan två tidsstämplar - har funnits sedan version 1.5 (det är 17 februari 2018!).
Följande stora utdrag jag lånade från codexen visar hur länge sedan ett aktuellt inlägg publicerades. Det använder publicera datum för posten som första argumentet och den nuvarande datum som andra.
echo "Det här inlägget publicerades". human_time_diff (get_the_time ('U'), current_time ('timestamp')). ' sedan';
get_post_meta ()
Bär med mig här, jag vet att det här är en välfungerad funktion, men hur det fungerar är inte så allmänt känt. Först och främst genom att utelämna andra och tredje parametrar kan du dra alla metadata för ett inlägg.
$ all_meta = get_post_meta (14);
Även om du bara tar tag i data för en enda nyckel, dras alla postmeta ändå.
Anledningen är faktiskt ganska logisk. Metadata används på flera ställen. Om
frågar databasen varje gång den användes skulle vi sluta med alltför många frågor. I stället cachar du allt om du drar metadata och använder de cachade värdena på alla efterföljande metadataåtervinningar.get_post_meta ()
wp_upload_bits ()
Denna funktion är en straight-up fil uppladdning funktion. Medan det inte flyttar filen till uppladdningsmappen och lägger till den i WordPress-mediasektionen, är den mycket bekväm och du kan alltid göra resten med
fungera.wp_insert_attachment ()
$ upload = wp_upload_bits ($ file ['name'], null, file_get_contents ($ file ['tmp_name']));
En del förklaring är till hands för detta: den första parametern är filnamnet. Den andra avskrivs så att den bör ställas till null (eyeroll i WordPress-konsistens). Den tredje parametern är filens faktiska innehåll.
get_post_field ()
Tidigare såg jag ett par exempel där någon skrev en slinga för att få en kommentar att räkna för ett inlägg, eller skrev en särskild databasfråga för den. Du behöver inte dem, vad du behöver är
. Denna funktion hämtar värdet av ett enda fält för ett enda inlägg i databasen. Låt oss ta en kommentarräkning!get_post_field ()
Detta inlägg har kommentarer.
wpautop ()
Denna funktion har kommit ut i rampljuset lite, men det är fortfarande relativt okänt. Det liknar PHP-infödda nl2br
men istället för att skapa nya linjer, det omslag ditt innehåll i stycken.
Det här är användbart om du har en textruta och du vill se till att när användare skapar stycken med dubbla rader är de också synliga i fronten.
Vad våra användare säger
wp_is_mobile ()
Denna passande namngivna funktion upptäcker när en användare är på en mobil enhet och låter dig visa innehållet i enlighet med detta. Eftersom det här är en villkorlig tagg returneras det sant eller felaktigt beroende på scenariot.
Besök vår webbplats på skrivbordet för en rikare användarupplevelse
wp_redirect ()
Det sista exemplet visar en annan snygg funktion:
. Detta ska användas i stället för PHP-infödda wp_redirect ()
rubrik()
fungera. Med WordPress-omriktningsfunktionen kan du Ange en URL för att omdirigera till, och ställ in en statuskod, bra för att hantera permanenta omdirigeringar också.
// För en webbadress som inte längre används wp_redirect ('http://website.com/new-url/', 301);
paginate_links ()
Jag slår vad om att denna funktion beror på sin dunkelhet till en del av WP-PageNavi-plugins popularitet. Som standard WordPress visar tidigare / nästa länkar i slutet av din postlista. WP-PageNavi ersätter det med sidnummer.
Detta kan faktiskt göras med lite arbete med
funktioner. Det har en hel del parametrar så jag rekommenderar att du tittar på dokumentationen.paginate_links ()
Följande exempel från codexen visar hur du kan lägga till den i en standardslinga men att lägga till den i anpassade slingor är inte mycket av en sträcka.
global $ wp_query; $ big = 999999999; // behöver ett osannolikt heltal echo paginate_links (array ('bas' => str_replace ($ big, '% #%', esc_url (get_pagenum_link ($ big))), 'format' => '? paged =% #%' , 'current' => max (1, get_query_var ('paged')), 'totalt' => $ wp_query-> max_num_pages));
wp_die ()
Denna funktion kompletterar PHP dö()
fungera. Skillnaden är att den här funktionen kommer att visa en WordPress-stilad HTML istället för en vanlig text. Du kan använda den här funktionen för att stoppa PHP-körning. Du kan lägga till meddelandet, titeln och ytterligare argument som ska visas, till exempel:
wp_die ("Oj, du har inte tillgång till", "Tillstånd nekad");
has_block ()
I version 5.0 introducerade WordPress en blockbaserad redaktör, kodnamn Gutenberg. Denna funktion kommer att identifiera om innehållet innehåller en Gutenberg, ganska lika med has_shortcode ()
fungera. Det kommer tillbaka Sann
Om innehållet innehåller ett block, eller falsk
om det inte gör det.
wp_set_script_translations ()
Eftersom många delar av WordPress användargränssnitt kommer att flytta till JavaScript behöver det ett bekvämt sätt att registrera översättbara texter i JavaScript som WordPress kan tolka och förstå. Använd den här funktionen för att ställa in översatta strängar för dina skript. Nedan är ett exempel:
wp_enqueue_script ('my-script', plugins_url ('js / my-script.js', __FILE__)); wp_set_script_translations ('my-script', 'mu-text-domain');
register_block_type ()
En annan framträdande funktion i WordPress 5.0. Med den här funktionen kan du registrera ett nytt block i den nya WordPress-editoren. Ditt block kommer att visas i den nya redigeraren och infoga den .
register_block_type ('my-plugin / new-block', array ('title' => 'Nytt block', 'icon' => 'megafon', 'category' => 'widgets', 'render_callback' => 'render_function_callback' ,));
rest_do_request ()
Med den här funktionen kan du ringa till WordPress REST API-ändpunkter genom PHP. Ganska användbart när du behöver hämta en utmatning från REST API för att bearbeta att du ska bearbeta vidare inom PHP-sidan istället för i webbläsarens (front-end) sida.
$ request = ny WP_REST_Request ('GET', '/ wp / v2 / inlägg'); $ request-> set_header ('X-WP-Nonce', wp_create_nonce ('wp_rest')); $ response = rest_do_request ($ request); $ data = 200 === $ response-> get_status ()? $ response-> get_data (): [];
rest_preload_api_request ()
När du bygger ett JavaScript-tungt användargränssnitt i WordPress behöver du vanligtvis en uppsättning initialdata som prolastas på sidan. Det här är den funktion som låter dig göra det. Denna funktion är avsedd att användas tillsammans med array_reduce
, till exempel.
// Preload vanliga data. $ preload_paths = array ('/', '/ wp / v2 / types? context = redigera', '/ wp / v2 / taxonomies? per_page = -1 & context = redigera', '/ wp / v2 / teman? status = aktiv' ,); preload_data = array_reduce ($ preload_paths, 'rest_preload_api_request', array ()); wp_add_inline_script ('wp-api-fetch', sprintf ('wp.apiFetch.use (wp.apiFetch.createPreloadingMiddleware (% s));', wp_json_encode ($ preload_data)), 'efter');
Slutsats
Dessa är bara några funktioner som verkar vara mindre kända än resten. Jag upptäcker en ny stor funktion varje varannan månad och jag är säker på att mina utvecklare vänner där ute kan överraska oss ännu längre.
Om du har en favorit obskurlig funktion eller en funktion som skulle vara användbar men inte tillgänglig, låt oss veta i kommentarerna!