Det här är den andra delen av att skapa ett slumpmässigt citat-plugin, men den här gången med anpassade posttyper.
I den andra versionen av pluginprogrammet för slumpmässigt citat flytta vi lite längre och använder några fler verktyg och funktioner. Anpassade posttyper finns tillgängliga sedan WordPress v3.0. De tillåter att utvecklare lägger till olika typer av innehåll till sina plugin-program och teman, och därmed kan du enkelt förlänga WordPress 'CMS-funktionalitet.
Du hittar den första versionen av plugin här. Om du bara börjar med plugin-utveckling eller vill ha en snabb uppdatering rekommenderas att du läser det först.
Detta är de data som behövs för varje plugin. Enkla saker som författare, plugin namn, beskrivning och så vidare.
Innan vi kan använda den slumpmässiga citat anpassade posttyp måste vi ställa in den. I etikettuppsättningen behövs namns- och pluralformen av namnet. Den allmänna omkopplaren som sätts till true tillåter användarna att använda posttypen på admin. De has_archive
ställer in alternativet att använda arkiv av posttyper.
array ('name' => __ ('Slumpmässiga citat'), 'singular_name' => __ ('Slumpmässigt citat')), 'public' => true, 'has_archive' => true)); ?>
Med project_edit_columns
och project_custom_columns
funktion kan vi skapa ett ändrat admingränssnitt för den anpassade posttypen med hjälp av Person
och Citat
fält (översteg titel och beskrivning). Båda dessa två funktioner behövs för att få jobbet gjort.
", "title" => "Person", "beskrivning" => "Citat"), returnera $ kolumner; add_action ("manage_posts_custom_column", "project_custom_columns"); funktion project_custom_columns ($ kolumn) global $ post; switch ($ kolumn) fall "beskrivning": the_excerpt (); break;?>
Detta är en bild av det slutliga plugin.
Med WP_Query
klass kan vi få ett slumpmässigt element från de anpassade inläggen. Eftersom vi bara hämtar ett element behöver vi inte en standardslinga. Att ställa in dessa tre argument är obligatoriska. De $ quo
variabel hjälper till att skapa en sträng baserad på citatet och dess författare som kan generera ett exempel på följande sätt:
"Jag tänker aldrig på framtiden. Det kommer snart nog."
~ Albert Einstein
'random_quote', 'posts_per_page' => 1, 'orderby' => 'rand'); $ query = nytt WP_Query ($ args); // Build output string $ quo = "; $ quo. = $ Query-> post-> post_title; $ quo. = 'Sagt' '; $ quo. = $ query-> post-> post_content; $ quo. = '"'; returnera $ quo;?>
För att bifoga det genererade citatet till dess plats använder vi en hjälparfunktion, och därefter bryter vi över standardfiltret (blogginfo).
Här är vad vi har gjort, bara en fil.
array ('name' => __ ('Slumpmässiga citat'), 'singular_name' => __ ('Slumpmässigt citat')), 'public' => true, 'has_archive' => true)); // Skapa admingränssnitt add_filter ("manage_edit-random_quote_columns", "ab_arq_project_edit_columns"); funktion ab_arq_project_edit_columns ($ kolumner) $ kolumner = array ("cb" => ", "title" => "Person", "beskrivning" => "Citat"), returnera $ kolumner; add_action ("manage_posts_custom_column", "ab_arq_project_custom_columns"); funktion ab_arq_project_custom_columns ($ kolumn) global $ post; ($ kolumn) fall "beskrivning": the_excerpt (); break; // Huvudfunktion för att få citatfunktion ab_arq_generate () // Hämta ett slumpmässigt citat $ args = array ('post_type' => 'random_quote' 'posts_per_page' => 1, 'orderby' => 'rand'); $ query = nytt WP_Query ($ args); // Build output string $ quo = "; $ quo. = $ query-> post-> post_title; $ quo. = 'sagt' '; $ quo. = $ fråga-> post-> post_content; $ quo. =' "'; returnera $ quo; // Helperfunktionsfunktion ab_arq_change_bloginfo ($ text, $ show) if ('description' == $ show) $ text = ab_arq_generate (); returnera $ text; // Åsidosätt standardfilter med den nya citatgenerator add_filter ('bloginfo', 'ab_arq_change_bloginfo', 10, 2); ?>
I några få steg har vi skapat ett mycket mer flexibelt lagringssystem med användande av anpassade inlägg, men observera att om du avaktiverar eller tar bort plugin kommer citaten (anpassade inlägg) att förbli i WordPress-databasen. Om du vill att dessa ska raderas måste du utöka detta plugin i enlighet med detta.