Dette er den andre delen av å opprette et tilfeldig quote-plugin, men denne gangen med egendefinerte innleggstyper.
I denne andre versjonen av tilfeldig quote-plugin beveger vi oss litt lenger og bruker noen flere verktøy og funksjoner. Egendefinerte innleggstyper er tilgjengelige siden WordPress v3.0. De tillater utviklere å legge til forskjellige typer innhold til plugin-moduler og temaer, og dermed kan du enkelt utvide WordPress 'CMS-funksjonalitet.
Du finner den første versjonen av pluginet her. Hvis du bare starter med plugin-utvikling eller ønsker en rask oppdatering, anbefales det å lese det først.
Dette er dataene som trengs for hvert plugin. Enkle ting som forfatter, plugin navn, beskrivelse og så videre.
Før vi kan bruke det tilfeldige sitat-tilpassede innleggstypen, må vi sette den inn. I etikettfeltet er singular- og flertallsformen av navnet nødvendig. Den offentlige bryteren satt til true tillater brukerne å bruke posttypen på administrasjonen. De has_archive
setter muligheten til å bruke arkiv av posttyper.
array ('name' => __ ('tilfeldige sitater'), 'singular_name' => __ ('tilfeldig quote')), 'public' => true, 'has_archive' => true)); ?>
Med project_edit_columns
og project_custom_columns
funksjon kan vi opprette et endret admingrensesnitt for den egendefinerte innleggstypen ved hjelp av Person
og Sitat
felt (overstyrer tittelen og beskrivelsen). Begge disse to funksjonene er nødvendig for å få jobben gjort.
""," title "=>" Person "," beskrivelse "=>" Sitat "), returner $ kolonner; add_action (" manage_posts_custom_column "," project_custom_columns "); funksjon project_custom_columns ($ kolonne) global $ post; ($ kolonne) sak "beskrivelse": the_excerpt (); break;?>
Dette er et bilde av det endelige pluginet.
Med WP_Query
klasse kan vi få et tilfeldig element fra de egendefinerte innleggene. Fordi vi henter kun ett element, trenger vi ikke en standardsløyfe. Innstilling av disse tre argumentene er obligatorisk. De $ quo
variabel bidrar til å lage en streng basert på sitatet og forfatteren som kan generere et eksempel som dette:
"Jeg tenker aldri på fremtiden. Det kommer snart nok."
~ Albert Einstein
'random_quote', 'posts_per_page' => 1, 'orderby' => 'rand'); $ query = nytt WP_Query ($ args); // Build output string $ quo = "; $ quo. = $ Spørring-> post-> post_title; $ quo. = 'Sagt' '; $ quo. = $ spørring-> post-> post_content; $ quo. = '"'; return $ quo;?>
For å feste det genererte sitatet til sitt sted bruker vi en hjelperfunksjon, og etterpå tilsidesetter vi standardfilteret (bloginfo).
Her er det vi har gjort, bare en fil.
array ('name' => __ ('tilfeldige sitater'), 'singular_name' => __ ('tilfeldig quote')), 'public' => true, 'has_archive' => true)); // Lag admingrensesnitt add_filter ("manage_edit-random_quote_columns", "ab_arq_project_edit_columns"); funksjon ab_arq_project_edit_columns ($ kolonner) $ kolonner = array ("cb" => ", "title" => "Person", "beskrivelse" => "Sitat"), returner $ kolonner; add_action ("manage_posts_custom_column", "ab_arq_project_custom_columns"); funksjon ab_arq_project_custom_columns ($ kolonne) global $ post; ($ column) case "description": the_excerpt (); break; // Hovedfunksjon for å få sitater funksjon ab_arq_generate () // Hent et tilfeldig sitat $ args = array ('post_type' => 'random_quote' 'posts_per_page' => 1, 'orderby' => 'rand'); $ query = nytt WP_Query ($ args); // Bygg utføringsstreng $ quo = "; $ quo. = $ spørring-> post-> post_title; $ quo. = 'sagt' '; $ quo. = $ spørring-> post-> post_content; $ quo. =' "'; returner $ quo; // Hjelperfunksjon funksjon ab_arq_change_bloginfo ($ tekst, $ show) if ('description' == $ show) $ text = ab_arq_generate (); returner $ tekst; // Overstyr standardfilter med den nye sitatgeneratoren add_filter ('bloginfo', 'ab_arq_change_bloginfo', 10, 2); ?>
På bare noen få skritt har vi opprettet et mye mer fleksibelt lagringssystem ved bruk av egendefinerte innlegg, men vær oppmerksom på at hvis du deaktiverer eller sletter pluginet, vil anførselstegnene (egendefinerte innlegg) forbli i WordPress-databasen. Hvis du vil at disse skal slettes, må du utvide denne plugin tilsvarende.