Idag fortsätter vi med vår mini-serie att infoga inlägg via fronten men i den här delen kommer vi att se uteslutande på hur man redigera och radera inlägg via frontänden. Vi kommer att täcka hur du visar alla våra inlägg, redigerar dem och tar bort dem. Så, gör oss redo och börja!
Vi är nu del två i vår mini-serie, och om du inte har läst den första delen så rekommenderar jag dig att du gör för att vi ska hämta upp från var vi slutade. Vårt mål efter att ha avslutat denna mini-serie borde tillåta användaren att skicka inlägg via frontänden, tillsammans med att redigera och skicka inlägg till papperskorgen. allt utan att vara i WordPress Dashboard. Dessa metoder kan användas både i ett tema eller plugin och vara mycket anpassningsbara för att uppnå mycket avancerade och komplexa inlägg.
Demo och nedladdningsfilerna är ett avskalat tema som har skapats för bara syftet med denna handledning.
Så öppna din favorit textredigerare och låt oss börja!
Vi börjar med att visa alla våra inlägg mer effektivt, vilket ger oss bättre hantering över våra inlägg och tillåter oss att utföra handlingar på varje inlägg. Eftersom vi använder ett tema för att utveckla detta skapar vi en sidmall som heter mall-view-posts.php. Vi kommer också att skapa en ny sida via vår WordPress Dashboard Sidor -> Lägg till nya -> Sidattribut Tilldela mallen till den här sidan.
Vi har nu vår sidmall och sida skapad i vårt WordPress-tema, vi kan börja skriva ut alla våra inlägg. Vi kommer att skapa en mycket enkel tabell för att utföra all nödvändig information. Börja med att skapa ett bord med några rubriker, enligt följande:
Post titel | Postutdrag | Poststatus | Åtgärder |
---|---|---|---|
Nu när vi har vårt bord på plats, kan vi börja fylla våra tabellrader med information om våra inlägg. Vi börjar med att först göra en anpassad WordPress-loop, för att säkerställa att vi får alla inlägg och alla poststatuser, eftersom vi vill kunna se vilka inlägg som väntar, utkast, publiceras eller till och med skickas till papperskorgen. Vi gör detta genom att infoga följande bit kod:
'post', 'posts_per_page' => '-1', 'post_status' => array ("publicera", "väntar", "utkast", "privat", "skräp"))); ?>
Detta är vårt frågaobjekt med alla våra anpassade parametrar som vi har ställt in. Du kan läsa om alla olika parametrar som vi kan ställa in från WordPress Codex. Nästa kommer vi att springa vår WordPress-loop precis efter våra tabellrubriker, så här:
have_posts ()): while ($ query-> have_posts ()): $ query-> the_post (); ?>
Lysande! Vi har vårt bordsset och vår WordPress-loop-uppsättning. Nu behöver vi bara skriva in vår information som är relaterad till våra tabellrubriker. Byt ut våra tomma bordceller med följande kod:
Redigera radera
Koden som vi just har lagt in börjar först med att skriva ut vår posttitel, och nästa punkt lägger ut ett utdrag ur vårt inlägg. Vi får då aktuell status för inlägget och skickar post-ID till den här funktionen och slutligen skriver vi in två länkar Redigera och Radera, Vi kommer att använda dessa senare som våra handlingar.
Brilliant, vi gör bra framsteg. Vi har satt upp vårt tema för att se alla våra inlägg via fronten. Därefter kommer vi att redigera posten. Vi börjar med att skapa en annan sidmall som heter mall-edit-posts.php. Vi kommer också att skapa en ny sida via vår WordPress Dashboard Sidor -> Lägg till nya -> Sidattribut och tilldel mallen till den här sidan.
Innan vi börjar redigera denna mall, låt oss hoppa tillbaka till vårt mall-view-posts.php fil och se till att vi skickar post-ID till webbadressen där vi hämtar ID-numret från vår redigeringssida. Det gör vi genom att använda WordPress-funktionen: add_query_arg
. Vi lägger in följande kod strax före länken Redigera:
Koden som vi bara har satt in ställer först parameterns namn och sedan följer det här postens ID och sedan får vi ID för vår mall för Redigera sidor och lägger till vårt anpassade URL-argument. Vi använder det här för att hämta informationen i vår Redigera mall.
Slutligen kommer vi att lägga ut det här i vår länk för redigering, vilket gör vår länk för redigering enligt följande:
"> Redigera
Nu när vi har ställt in det när användaren klickar på Redigera går det till Redigera mall med post-ID. Vi kommer att gå tillbaka till vårt mall-edit-posts.php fil och börja infoga vår kod.
Vi kommer att kopiera över vårt Form från vår mall-skär posts.php och sätt in det här i vår Redigera mall. Vi kopierar följande kod till vår redigeringsmall och tar bort alla värden från våra inmatningar och textområden, och gör vårt formulär enligt följande:
Nu när vi har vårt formulär för Redigera-sidformat måste vi använda WordPress-loopen för att gå igenom alla våra inlägg och bara hitta våra inlägg som matchar post-IDet som skickats till vår webbadress. Vi gör det genom att köra WordPress-loopen längst upp i filen:
'post', 'posts_per_page' => '-1')); ?> have_posts ()): while ($ query-> have_posts ()): $ query-> the_post (); ?>
För WordPress-slingan för att säkerställa att vi endast hämtar informationen i det specifika inlägget, lägger vi in följande kod som säkerställer att vi får rätt post-ID, inuti vår slinga:
om (isset ($ _GET ['post'])) if ($ _GET ['post'] == $ post-> ID) $ current_post = $ post-> ID;
Det vi just har lagt in är att få URL-parametern och testa den mot post-ID, och när den har hittat en match kommer vi att tilldela det här ID-nummeret till vår current_post
variabel. Efter detta lägger vi in någon kod för att få vår information med avseende på vårt inlägg, sätt in följande kod strax nedanför vår current_post
uppdrag:
$ title = get_the_title (); $ content = get_the_content ();
Vår sista kod ska se så här ut:
om (isset ($ _GET ['post'])) if ($ _GET ['post'] == $ post-> ID) $ current_post = $ post-> ID; $ title = get_the_title (); $ content = get_the_content ();
Det här är bra, vi gör bra framsteg. Nu när vi har all vår information, behöver vi bara infoga den i våra formvärden, det här är enkelt eftersom vi bara ska tilldela värden för båda våra fält. Tillsammans med detta uppdaterar vi namnet på vår knapp till Uppdatera inlägg. Följande kod är vår uppdaterade blankett med formuläret fyllt med titeln och innehållet i redigeringsposten:
Som du kan se från koden har vi tilldelat vårt posttitelinmatningsvärde för att mata ut titelföreningen och inuti vårt textområde har vi utmatat vår innehållsvariabel, men som du kanske har märkt att när vi klickar på Uppdatera Post händer inget detta beror på att vi inte har hanterat detta ännu, och vi kommer att göra det nu.
Vi måste hoppa tillbaka till vårt mall-skär posts.php fil och vi ska kopiera vår PHP-formulärvalidering till vår Redigera mall. Nu när vi har kopierat över vår formulärvalidering, kommer vi att göra några ändringar och infoga någon kod. Vi måste hämta current_post
variabel i vår formvalidering, och vi gör detta genom att ställa in en global variabel och vi lägger in detta ovanför vår validering:
globala $ current_post;
Därefter kommer vi att göra en ändring till vårt post_information
array. När vi uppdaterar vårt inlägg måste vi se till att det uppdaterar rätt post och inte alla inlägg, vi gör det genom att infoga en ID-parameter i vår post_information
array. Gör vårt utbud enligt följande:
$ post_information = array ('ID' => $ current_post, 'post_title' => wp_strip_all_tags ($ _POST ['postTitle']), 'post_content' => $ _POST ['postContent'], 'post_type' => 'inlägg' , 'post_status' => 'väntande');
Slutligen gör vi en sista ändring som kommer att se till att vi uppdaterar inlägget och inte lägger in ett nytt inlägg. Vi gör det genom att helt enkelt ändra den funktion vi använder istället för att använda wp_insert_post
, vi kommer att använda wp_update_post
. Gör vår sista kod enligt följande:
$ post_id = wp_update_post ($ post_information);
Och det är det för att redigera inlägget via frontänden. Slutligen, för den här delen av mini-serien kommer vi att gå vidare på hur man raderar inlägg.
Nu finns det många olika sätt att radera inlägg, och det har skett många olika diskussioner i den bästa metoden för hur man uppnår detta. Av vissa är det förmodligen den felaktiga metoden men jag tycker att det fungerar bra för den nuvarande situationen. Vi kommer att använda funktionen get_delete_post_link
.
Vi kommer att överföra denna funktion till vår Delete Link, tillsammans med att passera postens ID, enligt följande:
"> / Radera
Och det är så enkelt att radera inlägg via fronten. Vi kommer bara att expandera detta lite för att säkerställa att vi inte kommer att få några fel och ge lite mer användaranmälan om att vi raderar ett inlägg. Vi gör detta genom att infoga en mycket enkel bekräftelsefunktion till vår onclick, enligt följande:
?') "href =""> Ta bort
Slutligen lägger vi om ett villkor runt vår länk för borttagning, så att vi bara kan radera ett inlägg om den nuvarande statusen för inlägget inte redan finns i papperskorgen. Vi gör detta enligt följande:
?') "Href =""> Ta bort
Och det är allt! Du kan skicka inlägg till papperskorgen. Bara om du var nyfiken på alternativmetoden om hur du raderar inlägg kommer jag att förklara det mycket kortfattat.
Metoden är mycket enkel att redigera inlägg genom att skicka post-ID till URL-adressen tillsammans med att lägga till en parameter för radera
och kontrollera om värdet på denna parameter är sant, och om det är sant, skicka sedan wp_trash_post
funktionen till länken. Detta är väldigt enkelt och mycket effektivt, men för vår nuvarande situation get_delete_post_link
fungerar helt bra.
Det är del 2 komplett! Vi kan nu infoga inlägg, redigera och ta bort inlägg via frontänden. Vi har täckt mycket innehåll hittills, och i nästa del kommer vi att gräva lite längre.
Inom nästa del ska vi titta på anpassade fält och mer.
Jag skulle vilja säga ett stort tack för att du spenderade tid att läsa min handledning, jag hoppas det hjälpte. Vänligen gärna lämna kommentarer och jag kommer att försöka mitt bästa för att hjälpa till och svara på dem, om inte kan du alltid kontakta mig direkt via min hemsida: www.VinnySingh.co eller Twitter @VinnySinghUK
Håll dig klar för del 3!