Vandaag gaan we via de voorkant door met onze mini-serie in invoegingen, maar in dit deel zullen we uitsluitend kijken naar hoe Bewerk en verwijderen berichten via de voorkant. We bespreken hoe we al onze berichten kunnen weergeven, bewerken en verwijderen. Laten we ons dus voorbereiden en beginnen!
We zitten nu in deel twee van onze miniserie en als je het eerste deel nog niet gelezen hebt, dan raad ik je aan dat te doen omdat we zullen oppikken van waar we waren gebleven. Ons doel na het voltooien van deze mini-serie moet de gebruiker in staat stellen om berichten in te dienen via de voorkant, samen met het bewerken en verzenden van de berichten naar de prullenbak; alles zonder in het WordPress-dashboard te staan. Deze methoden kunnen zowel in een thema of in een plug-in worden gebruikt en kunnen zeer flexibel worden aangepast om zeer geavanceerde en complexe submissies te bereiken.
De demo en de downloadbestanden zijn een uitgekleed thema dat is gemaakt voor alleen de doeleinden van deze zelfstudie.
Dus open je favoriete teksteditor en laten we beginnen!
We zullen beginnen door al onze berichten effectiever weer te geven, dit geeft ons een beter beheer over onze berichten en stelt ons in staat om acties uit te voeren op elke post. Omdat we een thema gebruiken om dit te ontwikkelen, zullen we een paginasjabloon maken met de naam template-view-posts.php. We zullen ook een nieuwe pagina maken via ons WordPress-dashboard Pagina's -> Nieuwe toevoegen -> paginakenmerken zoals de sjabloon aan deze pagina toewijzen.
We hebben nu onze paginasjabloon en pagina gemaakt in ons WordPress-thema, we kunnen beginnen met het uitvoeren van al onze berichten. We zullen een heel eenvoudige tabel maken om alle nodige informatie uit te voeren. Begin met het maken van een tabel met enkele koppen, als volgt:
Titel plaatsen | Post Fragment | Poststatus | acties |
---|---|---|---|
Nu we onze tafel op zijn plaats hebben, kunnen we onze tabelrijen vullen met informatie over onze berichten. We beginnen met het maken van een aangepaste WordPress-lus om ervoor te zorgen dat we alle berichten en alle poststatussen krijgen, omdat we willen kunnen zien welke berichten in behandeling zijn, worden opgesteld, gepubliceerd of zelfs naar de prullenbak worden verzonden. We doen dit door het volgende stukje code in te voegen:
'post', 'posts_per_page' => '-1', 'post_status' => array ('publish', 'pending', 'draft', 'private', 'trash'))); ?>
Dit is ons query-object met al onze aangepaste parameters die we hebben ingesteld. U kunt lezen over alle verschillende parameters die we uit de WordPress Codex kunnen instellen. Vervolgens zullen we onze WordPress-lus uitvoeren net na onze tabelkopjes, zoals deze:
have_posts ()): while ($ query-> have_posts ()): $ query-> the_post (); ?>
Briljant! We hebben onze tafelset en onze WordPress-lus ingesteld. Nu hoeven we alleen maar onze informatie in te voeren die betrekking heeft op onze tabelrubrieken. Vervang onze lege tabelcellen door de volgende code:
Bewerken verwijderen
De code die we zojuist hebben ingevoegd, begint met het uitvoeren van onze berichttitel en het volgende item geeft een fragment van ons bericht weer. We krijgen dan de huidige status van de post en geven de post-ID door aan deze functie en tenslotte voeren we twee koppelingen in Bewerk en Verwijder, we zullen deze later gebruiken als onze acties.
Schitterend, we boeken goede vooruitgang. We hebben ons thema ingesteld om al onze berichten via de frontend te bekijken. Vervolgens gaan we het bericht bewerken. We beginnen dit door een ander paginasjabloon te maken met de naam template bewerken-posts.php. We zullen ook een nieuwe pagina maken via ons WordPress-dashboard Pagina's -> Nieuwe toevoegen -> paginakenmerken en wijs de sjabloon toe aan deze pagina.
Voordat we beginnen met het bewerken van deze sjabloon, laten we teruggaan naar onze template-view-posts.php bestand en zorg ervoor dat we de Post-ID doorgeven aan de URL waar we de ID van onze bewerkingspagina zullen ophalen. We doen dit met behulp van de WordPress-functie: add_query_arg
. We voegen de volgende code toe net voor onze link Bewerken:
De code die we zojuist hebben ingevoegd, stelt eerst de naam van de parameter in en vervolgens wordt de ID van de post gevolgd en krijgen we de ID van onze sjabloon voor paginaslezing en voegen we ons aangepaste URL-argument toe. We zullen dit gebruiken om de informatie op te halen in onze bewerkingssjabloon.
Ten slotte zullen we dit naar onze edit link exporteren, en onze edit link als volgt maken:
"> Uitgeven
Nu we het hebben ingesteld voor wanneer de gebruiker op Bewerken klikt, gaat het naar onze bewerkingssjabloon met de bericht-ID. We zullen teruggaan naar onze template bewerken-posts.php bestand en begin met het invoegen van onze code.
We zullen kopiëren over onze Het formulier van onze template-insert-posts.php en voeg dit toe aan onze bewerkingssjabloon. We kopiëren de volgende code in onze bewerkingssjabloon en verwijderen alle waarden uit onze invoer- en tekstgebieden, en maken ons formulier als volgt:
Nu we onze paginabeheerset bewerken hebben, moeten we de WordPress-lus gebruiken om al onze berichten te doorlopen en alleen onze berichten te vinden die overeenkomen met het bericht-ID dat is doorgegeven aan onze URL. We doen dit door de WordPress-lus bovenaan ons bestand uit te voeren:
'post', 'posts_per_page' => '-1')); ?> have_posts ()): while ($ query-> have_posts ()): $ query-> the_post (); ?>
Voor de WordPress-lus om ervoor te zorgen dat we alleen de informatie van de specifieke post ophalen, voegen we de volgende code toe die ervoor zorgt dat we de juiste post-ID binnen in onze lus krijgen:
if (isset ($ _GET ['post'])) if ($ _GET ['post'] == $ post-> ID) $ current_post = $ post-> ID;
Wat we zojuist hebben ingevoegd, is om de URL-parameter op te halen en te testen met de post-ID, en wanneer deze een overeenkomst heeft gevonden, zullen we die ID toewijzen aan onze current_post
variabel. Hierna zullen we wat code invoegen om onze informatie met betrekking tot onze post te krijgen, voeg de volgende code net onder ons in current_post
werkstuk:
$ title = get_the_title (); $ content = get_the_content ();
Onze definitieve code zou er als volgt uit moeten zien:
if (isset ($ _GET ['post'])) if ($ _GET ['post'] == $ post-> ID) $ current_post = $ post-> ID; $ title = get_the_title (); $ content = get_the_content ();
Dit is geweldig, we boeken goede vooruitgang. Nu we al onze informatie hebben, hoeven we deze alleen in onze formulierwaarden in te voegen, dit is eenvoudig omdat we alleen waarden voor beide velden zullen toewijzen. Samen met dit zullen we de naam van onze knop bijwerken naar Post bijwerken. De volgende code is ons bijgewerkte formulier met het formulier dat is gevuld met de titel en de inhoud van de bewerkingspost:
Zoals je kunt zien aan de code, hebben we onze invoertekst voor de titel van de post toegewezen om de titelvariabele uit te voeren, en binnenin ons tekstgebied hebben we onze inhoudsvariabele uitgevoerd, maar zoals je misschien hebt gemerkt, gebeurt er niets als we op Update posten klikken. is omdat we dit nog niet hebben afgehandeld, en we zullen dit nu doen.
We zullen terug moeten springen naar onze template-insert-posts.php bestand en we gaan onze PHP-formuliervalidatie naar onze bewerkingssjabloon kopiëren. Nu we onze formuliervalidatie hebben gekopieerd, zullen we enkele wijzigingen aanbrengen en een code invoegen. We moeten de current_post
variabele in onze formuliervalidatie, en we doen dit door een globale variabele in te stellen en we voegen dit toe boven onze validatie:
global $ current_post;
Vervolgens zullen we een wijziging aanbrengen in onze post_information
matrix. Nu we ons bericht bijwerken, moeten we ervoor zorgen dat het de juiste post en niet alle berichten bijwerkt. Dit doen we door een ID-parameter in te voegen in onze post_information
matrix. Onze array als volgt maken:
$ post_information = array ('ID' => $ current_post, 'post_title' => wp_strip_all_tags ($ _POST ['postTitle']), 'post_content' => $ _POST ['postContent'], 'post_type' => 'post' , 'post_status' => 'in behandeling');
Ten slotte zullen we een laatste wijziging aanbrengen die ervoor zorgt dat we de post bijwerken en geen nieuw bericht plaatsen. We doen dit door gewoon de functie die we gebruiken te veranderen in plaats van te gebruiken wp_insert_post
, we zullen gebruiken wp_update_post
. Onze definitieve code als volgt maken:
$ post_id = wp_update_post ($ post_information);
En dat is het voor het bewerken van berichten via de voorkant. Ten slotte gaan we voor dit deel van de minireeks verder met het verwijderen van berichten.
Er zijn nu veel verschillende manieren om berichten te verwijderen en er zijn veel verschillende discussies geweest over de beste methode om dit te bereiken, bij sommige mensen is dit waarschijnlijk de onjuiste methode, maar ik vind dat het prima werkt voor deze huidige situatie. We zullen de functie gebruiken get_delete_post_link
.
We zullen deze functie doorgeven aan onze Delete Link, samen met het doorgeven van de ID van de post, als volgt:
"> / Verwijderen
En het is zo eenvoudig om berichten via de voorkant te verwijderen. We zullen dit een beetje uitbreiden om ervoor te zorgen dat we geen fouten krijgen en een beetje meer melding van de gebruiker geven dat we een bericht verwijderen. We doen dit door als volgt een zeer eenvoudige bevestigingsfunctie in onze onclick in te voegen:
?') "href =""> Verwijderen
Ten slotte plaatsen we een voorwaarde rond onze verwijderkoppeling om ervoor te zorgen dat we alleen een bericht kunnen verwijderen als de huidige status van het bericht nog niet in de prullenbak staat. We doen dit als volgt:
?) "Href =""> Verwijderen
En dat is het! Je kunt berichten naar de prullenbak verzenden. Voor het geval je nieuwsgierig bent naar de alternatieve methode om berichten te verwijderen, zal ik het heel kort uitleggen.
De methode is heel eenvoudig om berichten te bewerken, door de bericht-ID door te geven aan de URL, samen met het toevoegen van een parameter van verwijderen
en controleren of de waarde van deze parameter waar is, en als het waar is, pas dan de wp_trash_post
functie naar de link. Dit is heel eenvoudig en zeer effectief, maar voor onze huidige situatie is het get_delete_post_link
werkt prima.
Dat is deel 2 compleet! We kunnen nu berichten invoegen, berichten bewerken en verwijderen via de voorkant. We hebben tot nu toe veel inhoud behandeld, en in het volgende deel zullen we wat verder graven.
In het volgende deel zullen we een kijkje nemen in aangepaste velden en meer.
Ik wil graag een ENORM bedanken dat je de tijd hebt genomen om mijn tutorial te lezen, ik hoop dat dit heeft geholpen. Aarzel niet om commentaar achter te laten en ik zal mijn best doen om hen te helpen en te beantwoorden, anders kan je altijd rechtstreeks contact met me opnemen via mijn website: www.VinnySingh.co of Twitter @VinnySinghUK
Blijf kijken voor deel 3!