Moitteeton postaustyyppi. Luokkien lisääminen mukautettuihin viestityyppeihin WordPressissä. Mukautettujen viestityyppien luominen
Tietoja mukautetuista viestityypeistä WordPressissä (CPT, mukautetut viestityypit WordPressissä), luomisesta ja määrittämisestä, luokkien ja tunnisteiden lisäämisestä, sisäkkäisten URL-osoitteiden luomisesta /post type/category/post tai http://example.com/post_type/ kategoria/ viesti/ .
Siinä kuvataan myös, kuinka WordPressin vakiotoimintoja voidaan laajentaa luomalla uudentyyppisiä postauksia, joita voidaan käyttää eri tarkoituksiin: oman portfolion lisääminen, elokuva- ja musiikkihakemisto, tuoteluettelo, tapahtumakalenteri, jopa oman pienen verkkosi tekeminen. kauppa (koska iso on parempi käyttää valmiita ratkaisuja, kuten WooCommerce) tai sosiaalinen verkosto ja paljon muuta tässä hengessä.
Ensin yleistietoa, sitten yksityiskohtia.
Tietoja WordPressin viesteistä: missä ne on tallennettu tietokantaan ja miten ne saadaan
Ehdottomasti kaikki WordPressin viestit, joista keskustellaan alla, on tallennettu yhteen taulukkoon: wp_posts. Viestien metatiedot, kuten tiedot metalaatikoista, tallennetaan wp_postmeta-taulukkoon.
Annan esimerkin siitä, kuinka saada 10 tyyppistä postausta (vakio Viestit hallintapaneelissa).
Yleisesti ottaen tietoja ei tarvitse erikseen pyytää. Malleissa ne on jo valmiiksi asennettuna, esimerkiksi single.php:ssä tietuetiedot ovat jo käsiteltävissä silmukassa
If (have_posts()) ( while (have_posts()) ( the_post(); // Tässä käytetään silmukan tietoja, kuten the_title() jne. ) )
Jos tietoja on hankittava jostain silmukan tai mallin ulkopuolelta, käytetään WP_Query-kyselyä
$args = array("post_type" => "post", // Viestin tyyppi: sivu, liite, ... "posts_per_page" => 10, // 10 viestiä kerrallaan); $p = get_posts($args); // Tietoja voidaan laajentaa silmukassa if (!empty($p)) ( foreach ($p $post) ( setup_postdata($post); ?> ">= the_title() ?>
Tiedot saadaan SQL-kyselyllä:
Global$wpdb; $query = "VALITSE * FROM ($wpdb -> viestit) WHERE post_type = "viesti" RAJA 10"; $p = $wpdb -> get_results($query); exit(print_r($p)); // $p sisältää nyt taulukon, jossa on viestitietoja
Kaikki kolme yllä olevaa menetelmää antavat saman tulostuloksen.
Esiasetetut viestityypit WordPressissä: viesti, sivu, liite, versio, nav_menu_item
Merkinnät tai viestit (viesti)
Kaikkein käytetyin WordPressissä oleva yksikkö on Posts (alias posts). Käytetään blogiteksteinä ja vastaavina. Siinä on 2 esiasetettua taksonomiaa: otsikot, jotka tunnetaan myös kategorioina (luokka) ja tunnisteet, jotka tunnetaan myös tunnisteina (post_tag).
Taksonomiaa käytetään viestien lajitteluun ja järjestämiseen.
Luokat eroavat tunnisteista siinä, että niillä on puurakenne (ne voidaan upottaa sisäkkäin).
Levyt ovat toisistaan riippumattomia yksiköitä ja siten ne ovat jossain määrin samanlaisia kuin Records.
Lisäksi oletusarvoisesti WordPress-sivuston RSS-syöte luodaan merkinnöistä.
Tietueissa käytetään seuraavia mallitiedostoja (prioriteettijärjestyksessä):
- single-post.php
- single.php
- yksittäinen.php
- index.php
Mallitiedostoja haetaan ylhäältä alas tärkeysjärjestyksessä. Jos teemasta löytyy mallitiedosto, sitä käytetään ja haku keskeytetään.
Sivut
Sivuja käytetään pääasiassa palvelusivuina, aloitussivuina, aloitussivuina, tietosanakokoelmina ja vastaavina. Niillä on puumainen hierarkia, eli ne voidaan upottaa toistensa sisään, mikä heijastuu viimeisen sivun osoitteeseen (URL-ketjussa on ylätason pikakuvakkeet), ja tässä roolissa on mahdollista anna heille etusija lajittelussa.
Voit luoda aloitussivun kahdella tavalla:
Luo erityinen sivumalli
Luo jonnekin teeman sisään juureen tai sen alihakemistoon tiedosto mielivaltaisella nimellä ja php-tunnisteella, esimerkiksi landing.php. Sisälle voit sijoittaa täysin minkä tahansa mallin, joka voi olla täysin erilainen kuin muut sivuston sivut. Mutta tärkeintä on sijoittaa tämä koodi tiedoston alkuun:
Mallin nimi on erityinen tarra, joka kertoo WordPressille, että tämä tiedosto on erityinen malli.
Nyt kun luot ja muokkaat mitä tahansa sivua, katso oikealla olevaa lohkoa nimeltä Sivun attribuutit, sen Malli-osiossa voit valita ainutlaatuisen aloitussivumme.
Sivuille käytetään seuraavaa mallihierarkiaa. Kuten tietueiden kohdalla, ilmoitan tärkeysjärjestyksessä:
- (malli).php
- sivu-(sivun_tunniste).php
- sivu-(sivu_ID)
- page.php
- yksittäinen.php
- index.php
Liitteet, liitteet tai liitteet
Apuohjelmatyyppi, joka on suunniteltu tallentamaan tietoja tiedostoista (kuvat, ääni, video ja vastaavat), jotka on ladattu lataajan kautta tavalliseen WordPress-editoriin, kun julkaisua, sivua tai vastaavaa muokataan: koko, paino, kuvaus, mikä viesti tai sivu he ovat kiintyneitä ja sellaisia asioita.
Voit hankkia liitteitä myöhempää käsittelyä varten käyttämällä seuraavaa koodia:
$args = array("post_type" => "attachment", // Viestityyppi: liite "post_status" => "peri", // Oletus on "julkaise", ja sen avulla et voi vastaanottaa liitteitä, joten ilmoitamme liitteen erityistila "peri"); $p = get_posts($args); exit(print_r($p)); // Lähdössä meillä on taulukko liitteineen
Liitteiden mallien hierarkia:
- (mime-tyyppinen).php
- (mime-alatyyppi).php
- (mime-tyyppi-alatyyppi).php
- liite.php
- single.php
- yksittäinen.php
- index.php
Tarkistukset, luonnokset tai tarkistukset
Versiot, tunnetaan myös nimellä Revisions, ovat versioita luonnoksista, jotka luodaan automaattisesti, kun kirjoitat artikkelia WordPressin hallintapaneelissa tai tallennat artikkelin julkaisematta sitä.
Kirjoitusprosessin aikana jokaisen artikkelin kohdalla oletusarvoisesti jokainen luonnoksen versio tallennetaan. Voit verrata kahta eri versiota ja palata tarvitsemaasi versioon.
Useiden versioiden tallentaminen samasta artikkelista on melko kallista ja usein turhaa (vaikka luultavasti olisi oikeampaa jättää kaikki oletusarvoisesti, puhdistamalla säännöllisesti vanhat versiot laajennuksen avulla, esim. WP Optimize), joten versioiden tallennettujen versioiden määrä voidaan muuttaa kahdella vaihtoehdolla:
- Käytä wp_revisions_to_keep-suodatinta
- Rekisteröidy osoitteessa wp-config.php //Poista versiot käytöstä pienimpään mahdolliseen arvoon define("WP_POST_REVISIONS", 0);
Mahdolliset arvot:
- tosi tai -1: Tallentaa luonnoksen jokaisen version. Oletusasetus
- false tai 0: poistaa luonnosten tallennuksen käytöstä, paitsi 1 automaattinen tallennus
- Kokonaisluku suurempi kuin nolla: määritetty määrä luonnosversioita tallennetaan + 1 automaattinen tallennus. Vanhat versiot, jotka eivät mahdu määritettyyn numeroon, poistetaan automaattisesti
Navigointivalikon kohteet (nav_menu_item)
Navigointivalikko (nav_menu_item) on viestityyppi, joka tallentaa tietoja WordPressin navigointikohteesta. Ensimmäinen ja toistaiseksi ainoa tietuetyyppi, jota ei käytetä muiden tietueiden tapaan, sivuston toimintaa ja näyttämistä varten oleva data saa omat erilliset funktionsa.
Navigointivalikot eivät myöskään ole oletusarvoisesti käytössä. Voit ottaa ne käyttöön ilmoittamalla heidän tukensa:
- Kirjoita add_theme_support("menus");
- Tai rekisteröi valikkotila komennolla register_nav_menu() , jolloin valikkojen tuki otetaan automaattisesti käyttöön
Käytä wp_nav_menu() saadaksesi tiedot, koska WP_Query ei toimi ja se on nav_menu_item viestityypin ominaisuus.
// Tämä koodi toimii wp_nav_menu(); // Näyttää ensimmäisen rekisteröidyn ei-tyhjän valikon // Alla oleva koodi ei kuitenkaan toimi $args = array("post_type" => "nav_menu_item", // Viestityyppi: sivu, liite, ...); $p = get_posts($args); exit(print_r($p)); // Tuloste on tyhjä taulukko
Mukautettu viestityyppi (CPT WordPress)
Nyt tulemme pääasiaan - työkaluun, jonka avulla voit laajentaa WordPressin standardibloggaustoimintoja loputtomiin mahdollisuuksiin: mukautettuun mukautettuun viestityyppiin.
Yksinkertaisin esimerkki siitä, kuinka voit rekisteröidä uuden postaustyyppimme sheensay_product
Add_action("aloitus", "sheensay_post_type"); function sheensay_post_type() ( register_post_type("sheensay_product", array("labels" => array("name" => "Tuotteet", "singular_name" => "Tuotteet",),), "public" => true, // tyyppi tietueet ovat avoinna haulle ja vastaaville "has_archive" => true, // Ota käyttöön arkistosivut "supports" => array("otsikko", "editori", "pikkukuva", "kommentit"), // Ota käyttöön tuki otsikko, editori , pikkukuvat, kommentit));
Tässä sheensay_product on uuden viestityypin nimi. Sen ei pitäisi olla ristiriidassa muiden järjestelmän jäsenten kanssa.
Tässä suoritusmuodossa se toimii myös pikakuvakkeena tämäntyyppiseen viestiin, eli se on läsnä URL-osoitteessa. Jos haluat määrittää esimerkiksi toisen pikakuvakkeen Tuotteet, tee kuten alla olevassa esimerkissä
Add_action("aloitus", "sheensay_post_type"); function sheensay_post_type() ( register_post_type("sheensay_product", array("labels" => array("name" => "Tuotteet", "singular_name" => "Tuotteet",),), "public" => true, "rewrite" => array("slug" => "products"), // Tunniste Custom Post Type "has_archive" => true, "supports" => array("otsikko", "editori", "pikkukuva"),) ; )
Kuinka valita oikea nimi uudelle viestityypille
Seuraavat nimet on varattu WordPressissä, eikä niitä voi käyttää uuden viestityypin nimenä:
- liite
- tarkistus
- nav_menu_item
- toiminta
- teema
- Tilaus
Vältä myös wp_-etuliitettä nimen alussa, koska se voi aiheuttaa ristiriitoja WordPress-ytimen tulevien versioiden kanssa.
On parasta, jos lisäät nimien etuliitteitä mielivaltaisilla etuliitteillä, jotka liittyvät sivustosi, tuotteesi tai brändisi nimeen, esimerkiksi sheensay_product, niin vältyt taatusti mahdollisilta ristiriitaisilta
Kuinka tehdä mukautettu taksonomia
Mukautetut viestityypit voivat käyttää viesteistä peräisin olevia taksonomioita, esimerkiksi luokkia (kategorioita) tai tunnisteita (tunnisteita), mutta sinulla voi olla omia taksonomioita.
Add_action("aloitus", "sheensay_post_type"); function sheensay_post_type() ( // Rekisteröi taksonomia register_taxonomy("sheensay_product_type", "sheensay_product", array("label" => "Types", "hierarchical" => true, // Jos TOSI, taksonomia on analoginen otsikoiden kanssa (kategoriat) Jos EPÄTOSI (oletus), taksonomiasta tulee analogi tunnisteille "rewrite" => array("slug" => "product-type"),)); Custom Post Type) register_post_type ("sheensay_product", array("labels" => array("name" => "Tuotteet", "yksittäinen_nimi" => "Tuotteet",), "public" => true, "rewrite" = > array("slug " => "products"), // CPT-tunniste määritellään tässä "has_archive" => true, "supports" => array("otsikko", "editori", "pikkukuva"), // Ota käyttöön otsikon, editorin, pikkukuvan tuki ) )
Mallit mukautetuille viestityypeille
Kaikki riippuu siitä, millaista tietoa näytetään. Vaihtoehtoja voi olla kolme: tietty viestimalli, viestiarkistomalli ja taksonomiamalli
Viestisivun malli
Listattu tärkeysjärjestyksessä
- single-(post_type).php
- single.php
- index.php
Viestiarkistomalli
- arkisto-(post_type).php
- arkisto.php
- index.php
Mukautettu taksonomiamalli
- taksonomia-(taksonomian_nimi)-(termi_nimi).php
- taksonomia-(taksonomian_nimi).php
- taksonomia.php
- arkisto.php
- index.php
Tässä taksonomian_nimi on sheensay_product_type ja termi_nimi on taksonomian tunniste, jonka luot hallintapaneelissa.
Kuinka saada mukautettuja viestityyppitietoja (Custom Post Type WordPress) ja näyttää ne sivustolla
Voit saada mukautettuja viestityyppitietoja WordPressissä näytettäväksi verkkosivustollasi samoilla menetelmillä kuin tavalliset viestit ja sivut
$args = array("post_type" => "sheensay_product", // Määritä uusi viestityyppimme "posts_per_page" => 10,); $p = get_posts($args); foreach ($p $posta) ( setup_postdata($post); ?> ">= the_title() ?>
Jos puhumme pääpyynnöstä, jonka tiedot esimerkiksi esiladataan näytettäväksi pääsivulla tai tavallisilla arkistosivuilla, mielivaltaiset viestityypit poistetaan siellä käytöstä.
Joten jos haluat minkä tahansa luodun viestityypin näkyvän esimerkiksi arkistosivuilla tavallisten viestien rinnalla, sinun on vaihdettava viestien esilataussuodatin
// Yhdistä "sheensay_product" -standardiin "post" ja "page" add_action("pre_get_posts", "add_sheensay_product_in_main_query"); function add_sheensay_product_in_main_query($query) ( if (is_archive() && $query -> is_main_query()) $query -> set("post_type", array("post", "page", "sheensay_product")); return $query ;)
Valmis luokka mukautettujen viestityyppien luomiseen mukautetulla taksonomialla
Alla on luokka, johon voit rekisteröidä minkä tahansa mukautetun viestityypin, jolla on oma taksonomia, ja URL-osoite näyttää tältä
http://example.com/products/type/product
Jotta URL-osoite voidaan luoda, sinun on siirryttävä pysyvän linkin asetuksiin /wp-admin/options-permalink.php ja määritettävä kaikki yleiset asetukset, jotka eivät ole yksinkertaisia.
Alla on itse luokan koodi. Sinun ei tarvitse tehdä siihen muutoksia, mutta voit muuttaa viestityypin tunnisteen aivan lopussa rivillä new Sheensay_Product("products");
Itse koodi on kirjoitettu - tai -kielellä. Ensimmäinen vaihtoehto on parempi, koska tässä tapauksessa et menetä pääsyä uuden viestityypin sisältöön, kun muutat aktiivista teemaa.
?p=1713 * */ final class Sheensay_Product { // Ярлык произвольного типа записи по умолчанию private $post_type = "продукция"; function __construct($post_type = "") { // Переопределяем значение ярлыка по умолчанию if ($post_type) $this -> post_type = $viestin_tyyppi; /* * Rekisteröi mukautettu viestityyppi */ add_action("init", array($this, "sheensay_cpt_product")); /* * Suodata URL */ add_filter("post_type_link", array($this, "product_permalink_structure"), 10, 2); /* * Jotta sivutus toimisi */ add_action("generate_rewrite_rules", array($this, "fix_product_category_pagination")); ) function sheensay_cpt_product() ( /* * Rekisteröi mukautettu taksonomia uudelle viestityypille */ register_taxonomy("sheensay_product_type", "sheensay_product", array("label" => "Tyypit", "hierarchical" => true, "query_var" " = > true, "rewrite" => array("slug" => $this -> post_type),)); /* * Rekisteröi uusi viestityyppi */ $labels = array("name" => "Tuotteet" , // Päänimi "singular_name" => "Tuotteet", // Lisää "add_new" => "Lisää uusi", // Linkin nimi uuteen merkintään sivupalkissa "add_new_item" => "Lisää uusia tuotteita" , // Otsikko editorissa uutta merkintää lisättäessä $args = array("labels" => $labels, "public" => true, "publicly_queryable" => true, "show_ui" => true, "query_var"); " => true, "capability_type" = > "post", "hierarchical" => false, "menu_position" => null, "supports" => array("otsikko", "editori", "pikkukuva", "ote" ), "rewrite" => array( "slug" => $this -> post_type . "/%sheensay_product_type%", "with_front" => false,), "has_archive" => $this -> post_type,); register_post_type("sheensay_product", $args); if (current_user_can("manage_options")) // Ole varovainen tämän funktion kanssa. Se nollaa kaikki URL-tunnistussäännöt. On parempi kommentoida sitä kaiken työn jälkeen flush_rewrite_rules(); ) function product_permalink_structure($post_link, $post) ( if (FALSE !== strpos($post_link, "%sheensay_product_type%")) ( $product_type_term = get_the_terms($post -> ID, "sheensay_product_type"); if (!empty ($tuotetyyppi_termi)) $post_link = str_replace("%sheensay_product_type%", $product_type_term -> slug, $post_link return $post_link post_type . "/([^/]+)/page/?((1,))/?$"]); $wp_rewrite -> säännöt = array($this -> post_type . "/?$" => $ wp_rewrite -> index "?post_type=sheensay_product", $this -> post_type wp_rewrite -> preg_index(1), $this -> post_type "/([^/]+)/page/?((1,))/?$" => $wp_rewrite -> index "?sheensay_product_type= ". $wp_rewrite -> preg_index(1) . "&paged=" . $wp_rewrite -> preg_index(2),) + $wp_rewrite -> säännöt; ) ) /* * Suorita luokka * Suluissa voit määrittää viestityypin nimen */ new Sheensay_Product("tuotteet");
Nyt hallintapaneelissa voit rekisteröidä uusia tuotteita ja niiden tyyppejä
Rakenna viestityyppisestä objektista objekti, jolla on kaikki viestityyppiominaisuudet
Viestityypin ominaisuudet käyttävät "capability_type"-argumenttia perustana, jos ominaisuutta ei ole asetettu "capabilities"-argumenttitaulukossa tai jos "capabilities"-argumenttia ei ole annettu.
Capability_type-argumentti voidaan valinnaisesti rekisteröidä taulukkona, jolloin ensimmäinen arvo on yksikkö ja toinen monikko, esim. array("story, "stories") Muussa tapauksessa monikkomuodon arvoon lisätään "s". Rekisteröinnin jälkeen capability_type on aina yksikköarvon merkkijono.
Oletusarvoisesti seitsemän avainta hyväksytään osaksi ominaisuusjoukkoa:
- edit_posts - Määrittää, voidaanko tämän viestityypin objekteja muokata.
- edit_others_posts - Ohjaa, voidaanko muiden käyttäjien omistamia tämän tyyppisiä objekteja muokata. Jos viestityyppi ei tue kirjoittajaa, tämä käyttäytyy kuten edit_posts.
- publish_posts - Ohjaa tämän viestityypin julkaisuobjekteja.
- read_private_posts - Ohjaa, voidaanko yksityisiä objekteja lukea.
edit_post, read_post ja delete_post ovat metaominaisuuksia, jotka sitten yleensä kartoitetaan vastaaviksi primitiivisiksi ominaisuuksiksi kontekstista riippuen, joka olisi muokattava/luettava/poistettava viesti ja tarkistettava käyttäjä tai rooli. Näin ollen näitä ominaisuuksia ei yleensä myönnetä suoraan käyttäjille tai rooleille.
Nämä neljä primitiivistä kykyä tarkistetaan ytimessä eri paikoissa. On myös seitsemän muuta primitiivistä ominaisuutta, joihin ei viitata suoraan ytimessä, paitsi map_meta_cap(), joka ottaa kolme edellä mainittua meta-ominaisuutta ja kääntää ne yhdeksi tai useaksi primitiiviseksi ominaisuudeksi, jotka on sitten tarkistettava käyttäjän tai roolin suhteen riippuen konteksti.
- read - Ohjaa, voidaanko tämän viestityypin objekteja lukea.
- delete_posts - Ohjaa, voidaanko tämän viestityypin objekteja poistaa.
- delete_private_posts - Ohjaa, voidaanko yksityisiä objekteja poistaa.
- delete_published_posts – Hallitsee, voidaanko julkaistuja objekteja poistaa.
- delete_others_posts - Määrittää, voidaanko muiden käyttäjien omistamia objekteja poistaa. Jos viestityyppi ei tue kirjoittajaa, tämä käyttäytyy kuten delete_posts.
- edit_private_posts - Ohjaa, voidaanko yksityisiä objekteja muokata.
- edit_published_posts - Ohjaa, voidaanko julkaistuja objekteja muokata.
Näitä lisäominaisuuksia käytetään vain map_meta_cap(). Ne määritetään oletusarvoisesti vain, jos viestityyppi on rekisteröity "map_meta_cap"-argumentilla, jonka arvo on siis true (oletus on epätosi).
Ei ole koukkuja.
Palauttaa
Esine. Objekti, jolla on kaikki jäsenmuuttujien ominaisuudet.
Käyttö
get_post_type_capabilities($args); $args (kohde vaaditaan) Viestityypin rekisteröintiargumentit.Huomautuksia
- Katso: register_post_type()
- Katso: map_meta_cap()
Luettelo muutoksista
Versiosta 3.0.0 alkaen | Otettu käyttöön. |
Hanki viestityypin ominaisuuskoodi: wp-includes/post.php WP 5.2.3
capability_type)) ( $args-> capability_type = array($args-> capability_type, $args-> capability_type . "s"); ) // Yksikkökanta metaominaisuuksille, monikkokanta primitiivisille ominaisuuksille. lista($yksikkökanta, $monikkokanta) = $arvot->kyvyn_tyyppi; $default_capabilities = array(// Meta-ominaisuudet "edit_post" => "edit_" . $singular_base, "read_post" => "read_" . $singular_base, "delete_post" => "delete_" . $singular_base, // Primitive capabilities ulkopuolella map_meta_cap(): "edit_posts" => "edit_" . // Map_meta_cap():issa käytetyt primitiiviset ominaisuudet: if ($args->map_meta_cap) ( $default_capabilities_for_mapping = array("read" => "read", "delete_posts" => "delete_" . $plural_base, "delete_private_posts" => "Pullete_Private_". taulukon_yhdistäminen($oletus_ominaisuudet, $oletus_kartoituksen_ominaisuudet ) $ominaisuudet = array_merge($oletusominaisuudet, $args->ominaisuudet); // Viestien luontiominaisuus yksinkertaisesti yhdistää edit_posts-tiedostoon oletuksena: if (! isset($capabilities["create_posts"])) ( $capabilities["create_posts"] = $capabilities["edit_posts"]; ) // Muista meta-ominaisuudet tulevaa käyttöä varten. if ($args->map_meta_cap) ( _post_type_meta_capabilities($capabilities); ) return (objekti) $ominaisuudet; )Versiosta 2.9 lähtien WordPress on tarjonnut mahdollisuuden käyttää mukautettuja viestityyppejä. Nyt versiossa 3.0 kaikesta on tullut entistä mukavampaa, kun on mahdollista luoda paneeleja mukautetuille viestityypeille. Tässä artikkelissa näytämme, kuinka voit ottaa mukautettuja viestityyppejä käyttöön WordPress-sivustollasi.
Mukautettujen viestityyppien luominen - käytä laajennusta
Nykyään WordPressin versiossa 3.0 ei ole sisäänrakennettua käyttöliittymää mukautettujen viestityyppien luomiseen. Mukautettujen viestityyppien luomiseen on vain kaksi tapaa: laajennukset tai teeman kova koodaus tiedostoksi Functions.php. Ensin tarkastellaan suunnitelman toteuttamista laajennuksia käyttämällä.
Mukautetun viestityypin käyttöliittymä
Custom Post Type UI on Brad Williamsin kehittämä laajennus, jonka avulla voit helposti luoda mukautettuja viestityyppejä ja taksonomioita. Yksi tämän laajennuksen merkittävimmistä ominaisuuksista on, että se luo koodia mukautettujen viestityyppien luomiseksi, jotka voidaan myöhemmin lisätä tiedostoon Functions.php aiheita, ja haittapuoli on, että on mahdotonta käyttää taksonomioita kaikille viestityypeille.
Napsauta Custom Post Type UI -paneelissa "Lisää uusi".
- "Post Type Name" on mitä WordPress käyttää kyselyyn kaikista post_typen viesteistä.
- "Label" näkyy konsolin sivupalkissa, kuten tavallinen "Records"-valikko.
- Jos laajennat "Näytä lisäasetukset", näet useita lisäasetuksia. Useimmat niistä ovat intuitiivisia, kuten "Julkinen" ja "Näytä käyttöliittymä". Ensimmäinen, kun se on vaihdettu True-tilaan, antaa sinun näyttää mielivaltaisen viestityypin valikon sivupalkissa, ja toinen (Näytä käyttöliittymä), kun se on asetettu True-tilaan, luo valikkopalkin.
- "Uudelleenkirjoitus" sallii mukautettujen viestityyppien käyttää SEO-ystävällisiä WordPress-URL-osoitteita (pysyvät linkit, CNC).
- Kohdassa "Custom Rewrite Slug" määrität mitä haluat. WordPress käyttää määritettyä etanaa pysyvien linkkien luomiseen. Joten jos meillä on verkkotunnus esimerkki.fi ja slug on "elokuvat", linkkisi mukautettuun viestityyppiin näyttää suunnilleen tältä esimerkki.fi/elokuvat.
- WordPressin "Query Var" -ominaisuuden avulla voit suorittaa kyselyitä uusille viestityypeille. Jos otamme yllä olevan esimerkin, päästäksesi otsikkoon, Ensimmäinen elokuvapostaukseni joka on post_typessä Elokuvat, voimme tulla sisään example.com/?movies=my-first-movie-post. Siksi pyyntömuuttuja näyttää tältä: ?postityyppinimi
Lopuksi voit valita erilaisia ominaisuuksia, joita haluat mukautetun viestityypin tukevan, kuten pikkukuvat ja lainaukset.
Mukautettujen viestityyppien luominen - käytä Functions.php-tiedostoa
Jos haluat mieluummin luoda mukautettuja viestityyppejä ilman laajennuksia, lisää vain seuraava koodi teemasi functions.php-tiedostoon:
// Luo viestityyppi Movies register_post_type("movies", array("label" => "Elokuvat", "public" => true, "show_ui" => true, "capability_type" => "post", "hierarchical" = > false, "rewrite" => array("slug" => "elokuvat"), "query_var" => true, "supports" => array("nimi", "editori", "ote", "trackbacks" , "custom-fields", "comments", "revisions", "thumbnail", "author", "page-attributes")));
Analysoidaan koodi.
register_post_type($post_type, $args): Tämä funktio ottaa kaksi parametria, $post_type tai viestityypin nimi, ja $args, joukon parametreja.
etiketti: Viestityypille annettu nimi, joka näkyy sivuston hallintapaneelin sivupalkissa.
show_ui: tosi/epätosi. Näyttää tai piilottaa oletuskäyttöliittymän tämän tietuetyypin hallintaan.
capability_type: Oletus: post. Tietueen tyyppi testataksesi luku-, muokkaus- ja poistoominaisuuksia.
hierarkkinen: Onko tietue hierarkkinen.
kirjoittaa uudelleen: tosi/epätosi. Oletus: tosi. Jos slug-parametri on määritetty, etanan nimi lisätään ennen merkintää.
query_var: true/false Asettaa kyselymuuttujan mukautetulle viestityypille.
tukee: Oletus: otsikko ja kirjoittaja . Asettaa erilaisia ominaisuuksia, joita viestityyppi tukee.
Vieraile WordPress Codexissa saadaksesi lisätietoja register_post_type().
näytä mukautetut viestityypit
Jos haluat tulostaa tietueita mukautetusta tyypistäsi, sinun on lisättävä silmukkaan seuraava koodi. Muuta "nimi" viestityypin nimeksi. Huomautus: Sinun ei tarvitse lisätä omia viestityyppejäsi index.php-tiedostoosi. Voit luoda ja suorittaa seuraavan kyselyn silmukan sisällä.
$kysely = uusi WP_Query("viestin_tyyppi=nimi");
Jos haluat tulostaa viestejä useammasta kuin yhdestä viestityypistä, muuta seuraava koodi alla olevaksi koodiksi. Muuttaa elokuvia mukautetun tyyppisi nimeen.
a! Sisällön hallintajärjestelmä WordPress sai tunnustusta useiden vuosien ajan, mutta todellinen läpimurto oli tietueiden tyyppien erottelukyvyn käyttöönotto. Tällä oppitunnilla tarkastellaan lähemmin mukautettuja viestityyppejä, niiden luomista ja käyttöä.
Hieman historiaa
Käytännössä räätälöidyt viestityypit ilmestyivät melko kauan sitten, tarkemmin sanottuna 17.2.2005 lähtien, jolloin WordPress 1.5 Mukautettujen tyyppien tuki on lisätty staattisille sivuille tietokannan post_type-kentän kautta. Wp_insert_post()-funktio on ollut olemassa siitä lähtien WordPress 1.0 joten kun post_type-kenttä otettiin käyttöön versiossa 1.5, se oli melko helppo täyttää tällä funktiolla.
Ja vasta versiossa 2.8 ilmestyi register_post_type()-toiminto mukautettujen tyyppien luomiseen ja joitain muita hyödyllisiä asioita oli saatavana "yökkäisissä rakennusprojekteissa", ja jo 2.9: sta alkaen toiminnot tulivat kaikkien saataville.
Mitä nyt?!
Mukautettu viestityyppi ei ole muuta kuin tavallinen viesti (artikkeli), jolla on tietokannassa tietty post_type-kentän arvo. Tavallisessa viestissä post_type-kentällä on arvo lähettää, sivulla on väliä sivu ja niin edelleen. Voimme kuitenkin nyt luoda omia tyyppejä, jotka määrittelevät viestin sisältämän sisällön yksityiskohdat. Voit luoda mukautettuja viestityyppejä kirjoille, elokuville, vitseille, tuotteille ja muille.
Jos teet oikein, voit saavuttaa seuraavat tulokset muutamalla koodirivillä:
- Aseta mukautettu tyyppi admin-alueen pääpaneeliin alivalikkokohdilla: luettelo kaikista tämän tyypin merkinnöistä ja luo myös uusi merkintä tällä tyypillä;
- Luo arkisto tämäntyyppisistä viesteistä, eli tee jotain vastaavaa kuin pääsivu mukautetulle tyypille;
- Luo luokkia ja tunnisteita, joita voidaan käyttää mukautetuilla viestityypeillä sekä mukautetuilla taksonomioilla.
Erityyppisillä sisällöillä on erilaiset tietovaatimukset. Tavallisiin viesteihin kannattaa lisätä kirjoittaja, luokka ja päivämäärä. "Kirja"-tyyppisen tietueen osalta haluaisin pystyä määrittämään kirjan tekijän, sivumäärän, genren, kustantajan ja muita erityisiä tietoja. Tämä voidaan saavuttaa helposti käyttämällä mukautettuja (metalaatikoita) -alueita tietojen syöttämiseen.
— alueet lisätietojen syöttämiseen suoraan tietueen luontisivulla. Nämä alueet helpottavat mukautettujen viestityyppien käyttöä.
Työskentely mukautettujen viestityyppien kanssa
Jotta voit luoda ja käyttää mukautettuja viestityyppejä tehokkaasti, sinun tulee tuntea seuraavat asiat:
- Mukautettujen viestityyppien luominen;
- Mukautetun taksonomian luominen;
- Mukautettujen tietoalueiden luominen.
Mukautettujen viestityyppien luominen
Ensimmäinen asia, joka sinun on tehtävä, on luoda itse mukautettu viestityyppi. Ihannetapauksessa voit luoda laajennuksen käsittelemään mukautettuja viestityyppejä, mutta voit myös käyttää teemasi functions.php-tiedostoa.
1 |
|
Tämä on yksinkertaisin tapa luoda tyyppi, jolla ei käytännössä ole asetuksia. Uuden viestityyppimme kehittämiseksi käytämme joitain yleisimmin käytetyistä vaihtoehdoista ja lisäämme ne aiemmin tyhjään $args-taulukkoon.
1 | funktio my_custom_post_product() ( |
- tarrat— tätä tarraryhmää käytetään kuvaamaan aiheeseen luotavaa mukautettua viestityyppiä./li>
- kuvaus- yhteenveto luodusta mukautetusta viestityypistä, mitä se tekee ja miksi käytämme sitä.
- julkinen— käytetäänkö mukautettua tyyppiä julkisesti ja näytetäänkö se hallintoalueella. Tässä tapauksessa totuus on selvitetty.
- menu_position- tyyppimme valikkokohdan sijainti päähallintapaneelissa. Arvo 5 tarkoittaa, että kohde asennetaan välittömästi "Records"-valikkokohdan jälkeen, jos 10 tarkoittaa "Mediatiedostot"-kohdan jälkeen jne.
- tukee— Tämä vaihtoehto sisältää taulukon, joka kuvaa kentät, joita voimme muokata tietueen luontisivulla. Eli otsikko - näkyviin tulee kenttä viestin nimen kirjoittamista varten, editori - tekstialue näytetään viestin tekstin kirjoittamista varten jne. Myös käytetty mukautettu taksonomia, product_category , ilmoitetaan.
- has_archive- jos se on tosi, luodaan uudelleenkirjoitussääntö, jonka avulla voit saada luettelon meidän tyyppisistä tietueista osoitteessa http://mysite.com/product/
Kun olet asentanut tämän koodin function.php-tiedostoon, sinun pitäisi nähdä mukautetun viestityypin valikko. Nyt on mahdollista lisätä tietue ja tarkastella tietueluetteloa.
Nämä eivät kuitenkaan ole kaikki vaihtoehdot useille argumenteille. Löydät täydellisen luettelon vaihtoehdoista ja kaikista mukautettujen tyyppien ominaisuuksista.
Interaktiiviset hälytykset
WordPress luo joitain viestejä, jotka käynnistyvät käyttäjän toimista. Voimme myös luoda samanlaisia viestejä ilmoittamaan käyttäjälle, kun työskentelet tyyppien kanssa. Tämän tekee post_updated_messages.
1 | function my_updated_messages( $viestit ) ( |
Huomaa, että voit asettaa hälytyksiä kaikille mukautetuille viestityypeille käyttämällä tätä yhtä ominaisuutta. Jos et määritä tyypin nimeä, hälytyksiä käytetään kaikille mukautetuille tyypeille.
Kontekstuaalisia vihjeitä toteutetaan ja käytetään harvoin. Käyttäjänä en ole koskaan käyttänyt tätä ominaisuutta, mutta olen varma, että joku käyttää niitä. Joten luodaan tällainen kontekstuaalinen apu.
Asiayhteyteen liittyvät vihjeet sijaitsevat oikeassa yläkulmassa, lähellä näytön asetusvälilehteä.
1 | function my_contextual_help( $contextual_help , $screen_id , $screen ) ( $contextual_help = " Tällä sivulla on luettelo kaikista sivustolla myytävistä tuotteista. Merkinnät ovat käänteisessä kronologisessa järjestyksessä, ja viimeiset kohteet ovat ne kohteet, jotka lisäsimme ensin. Voit tarkastella/muokata kunkin tuotteen tietoja napsauttamalla sen nimeä, tai voit suorittaa joukkotoimintoja käyttämällä avattavaa valikkoa valitsemalla useita kohteita. ) elseif ( "tuote" == $näyttö -> tunnus ) ( $contextual_help = " Tällä sivulla voit luoda tuotteen tai muokata sitä koskevia tietoja. Muista täyttää lisäkentät. }
|
Jotta voimme näyttää tällaisen vihjeen, meidän on tiedettävä näytön tunniste. Jos sinun on luomisen aikana selvitettävä näyttötunnus, tee tämä:
echo $screen -> id ; |
Mukautettu taksonomia
Tavallisessa blogissa kategoriat ja tagit riittävät luomaan organisaatiorakenteen. Vaikka mukautetuille viestityypeille tämä ei aina riitä. Mukautettu taksonomia voi ratkaista tämän ongelman. Meidän tapauksessamme "Tuotekategoriat" -niminen taksonomia, jota käytetään vain viesteissä, joissa on mukautettu tyyppi "Tuotteet".
Muokatun taksonomian luontiprosessi on lähes identtinen mukautettujen viestityyppien luomisen kanssa. Katsotaanpa esimerkkiämme:
1 | funktio my_taxonomies_product() ( |
Kuten luodessasi mukautettua tyyppiä, muodostimme tarrataulukon ja osoitimme, että hierarkkinen rakenne on olennainen luodun taksonomian kannalta (eli voi olla ylä- ja alaelementtejä) - tämä on tyypillistä tavallisten viestien luokille. Muussa tapauksessa, jos rakenne ei ole hierarkkinen, luodaan tavalliset tunnisteet. Voit lukea lisää taksonomiasta.
Lisätietoalueet
Voit nähdä muita alueita tai lohkoja tietojen syöttämistä varten (metaruudut) viestien muokkaussivulla. Kaikki tietävät standardit, kuten luokan tai tunnisteiden valitsemisen. Joissakin aiheissa on myös vaihtoehtoja, joiden avulla voit liittää kuvan julkaisuun jne.
Koska luomme mukautetun tyypin "Tuotteet", tarvitsemme luonnollisesti tuotteen hinnan, katsotaanpa räätälöityjen luomisprosessia.
Luontiprosessi voidaan jakaa 3 vaiheeseen:
- Itse lohkon määritelmä;
- sisällön määrittäminen (mitä kenttiä lohkossa on);
- Kuvaus syötetyn tiedon käsittelyn algoritmeista.
Määritelmä metalaatikot
1 | add_action("add_meta_boxes" , "product_price_box" ) ; |
Yllä oleva koodi luo lohkon seuraavilla parametreilla:
- product_price_box— metalaatikon yksilöllinen tunniste (sen ei tarvitse vastata funktion nimeä);
- Tuotteen hinta— sen metaruudun nimi, jonka järjestelmänvalvoja näkee sivulla;
- tuotteen_hintalaatikon_sisältö— toiminto, joka näyttää ikkunan sisällön;
- tuote— mukautetun postityypin nimi, johon metalaatikot kuuluvat;
- puolella— lohkon sijainti sivulla (sivulla, normaali tai edistynyt – oletusarvoisesti);
- korkea— metaruutujen prioriteetti (tässä tapauksessa "korkea", lohko sijaitsee aivan sivupalkin yläosassa. Vaihtoehdot: korkea, ydin, matala tai oletusarvoisesti).
Sisällön määritelmä
1 | funktio product_price_box_content( $post ) ( |
Lisäämme vain yhden kentän tuotteen hinnan syöttämiseksi. Huomaa, että funktion nimi vastaa kolmannen parametrin arvoa, kun se on ilmoitettu (koodi yllä).
Syötettyjen tietojen käsittely
Viimeinen vaihe on tallentaa syötetty tuotteen hinta tietokantaan.
1 | add_action("save_post" , "product_price_box_save" ) ; if (defined("DOING_AUTOSAVE") && DOING_AUTOSAVE) if ( ! wp_verify_nonce( $_POST [ "product_price_box_content_nonce"] , plugin_basename( __FILE__ ) ) ) if ( "sivu" == $_POST [ "post_type" ] ) ( |
Suurin osa toiminnoista on tarkastuksia. Ensinnäkin automaattinen tallennus on valittuna, hintaa ei tallenneta ennen kuin painetaan tallennus- tai päivityspainiketta. Tämän jälkeen tarkastetaan pääsyoikeudet tämän postauksen tietojen muokkaamiseen ja vasta sen jälkeen päivitys_post_meta-funktiolla hinta syötetään tietokantaan.
Luodun tyyppisten viestien näyttäminen blogissa
Olemme käyneet läpi kaikki mukautetun postaustyypin luomisen vaiheet, jäljellä on vain hyödyntää työmme hedelmät ja luoda blogiin julkaisujen näyttö luomamme taksonomian mukaisesti.
Koska mukautetun tyypin luomisen aikana määritimme has_archive-parametrille true, tuotetyypin tietueiden luettelo on saatavilla osoitteessa http://mysite.com/product/ .
Arkisto-.php-tiedostoa (tässä tapauksessa archive-product.php) käytetään näyttämiseen, jos sellainen on olemassa. Muussa tapauksessa näyttöön käytetään tiedostoa archive.php ja jos tällaista tiedostoa ei ole teemassa, se käyttää )
)
;
$tuotteet = uusi WP_Query( $args ) ;
if ( $tuotteet -> have_posts () ) (
while ( $products -> have_posts () ) (
$tuotteet -> the_post () ;
?>
<
h1>
h1>
<
div class
=
"content"
>
div>
}
}
muu(
kaiku "Voi ei, ruokaa ei löytynyt!";
}
?>
Hinnan näyttö
Syötetyt lisätiedot, meidän tapauksessamme tuotteen hinta, voidaan hakea get_post_meta() -funktiolla. Koska käytämme lisäksi product_price -kenttää, hinta-arvon saamiseksi:
Laajennus mukautettujen viestityyppien luomiseen
Jos et ole varma ohjelmointikyvystäsi, voit aina löytää valmiin ratkaisun (plugin) ja käyttää sitä. Mukautetut tyypit eivät ole poikkeus. Kytkeä WCK Custom Post Type Creator avulla voit helposti luoda mukautettuja viestityyppejä WordPressille ilman koodaustietoa.
Hyvää päivää, rakkaat Habran asukkaat, olen tehnyt Web-sivustoja Wordpressissä monta vuotta ja päätin jakaa kokemukseni. Olin erittäin tyytyväinen aleksandritin aiemmin julkaisemaan uutiseen, että "WordPressiä käytetään jo yli 50 miljoonalla sivustolla", tämä uutinen inspiroi meitä tutkimaan yhä enemmän Wordpressin syviä ja piilotettuja ominaisuuksia. Samanlaisen aiheen julkaisi aiemmin bRuz, mutta haluaisin lähestyä asiaa eri tavalla, askel askeleelta.
Aloitetaan siis ilmeisestä.
Miksi tarvitsemme mukautetun viestityypin?
Custum post -tyypin päätarkoitus on antaa kehittäjälle mahdollisuus järjestää tietoja sivustolla. esimerkiksi: jos puhumme blogista, meillä on useita erilaisia tietoja (viestit, mediatiedostot, sivut ja linkit). Mutta mitä niiden, joilla on oma verkkosivusto, pitäisi tehdä? mitä uutta elokuvateollisuudessa? tällainen sivusto tarvitsee postauksen tyypin, kuten "Arvostelu", arvostelulla tulee olla seuraavat ominaisuudet: genre, julkaisuvuosi, kansi, näyttelijät jne... custum-viestityypin käyttäminen, toisin kuin tavalliset viestit, antaa meille mahdollisuuden käyttää nämä tiedot mallissa sekä etsiä tiettyjen parametrien mukaan ja lajitella.Aloitetaan luominen
Uuden viestityypin luomiseksi meidän on muokattava functions.php-tiedostoa, joka sijaitsee käytetyn mallin hakemistossa.Funktio create_post_type() ( // luo uusi viestityyppi
array(
"labels" => array(
"name" => __("Arvostelut"), // anna ohjauspaneelin osiolle nimi
"singular_name" => __("Yleiskatsaus") // anna yhden merkinnän nimi
),
"julkinen" => totta,
"menu_position" =>
"rewrite" => array("slug" => "arvostelut") // määritä slug linkeille esimerkiksi: http://omasivusto/arvostelut/
);
}
Ja niin se tapahtui
Huomaa, että arvostelut-välilehti on ilmestynyt vasempaan paneeliin.
Kuten tästä kuvasta näemme, meillä on pari ongelmaa. Otsikko on edelleen "Lisää merkintä", eikä kansikuvaa voi lisätä. Yritetään korjata tämä, tätä varten meidän on lisättävä pari parametria (etsi koodista täydellinen luettelo parametreista).
funktio create_post_type() ( // luo uusi viestityyppi
register_post_type("arvostelut", // osoittavat tyyppien nimet
array(
"labels" => array(
"name" => __("Arvostelut"), // anna ohjauspaneelin osiolle nimi
"singular_name" => __("Arvostelu"), // anna yhden merkinnän nimi
"add_new" => _x("Lisää uusi"), // järjestelmänvalvojan venäläistäminen. paneelit
"add_new_item" => __("Lisää uusi arvostelu"),
"edit_item" => __("Muokkaa arvostelua"),
"new_item" => __("Uusi arvostelu"),
"all_items" => __("Kaikki arvostelut"),
"view_item" => __("Näytä arvostelu"),
"search_items" => __("Hakuarvostelu"),
"not_found" => __("Ei arvosteluja"),
"not_found_in_trash" => __("arvosteluja ei löytynyt"),
"menu_name" => "Arvostelut"
),
"julkinen" => totta,
"menu_position" => 5, // osoittavat sijainnin vasemmassa säiliöpaneelissa
"rewrite" => array("slug" => "arvostelut"), // määritä slug linkeille esimerkiksi: http://omasivusto/arvostelut/
"supports" => array("otsikko", "editori", "pikkukuva", "versiot")// Tässä aktivoimme pikkukuvien tuen
);
}
Add_action("aloitus", "luo postauksen_tyyppi"); // aloittaa tyypin lisäykset
Tulos:
Ja niin, nyt olemme täysin korjanneet venäläistyksen ja mahdollistaneet pikkukuvien liittämisen uuteen viestityyppiimme. Nyt voimme luoda mallin, joka näyttää viestimme.
Silmukka
Ollakseni rehellinen, voin ajatella kahta tapaa näyttää uusi viestityyppi. ja niin esimerkkejä:Ensimmäinen tapa: Käytä mallitiedostoa, oletetaan, että uuden postauksen tyyppiä kutsutaan "arvosteluiksi", tässä tapauksessa luomme tiedoston nimeltä archive-reviews.php näyttääksesi useita viestejä ja single-reviews.php näyttääksesi yhden postauksen (offtopic. Kiva esimerkki kaikkien mallien hierarkiasta näkyy täydellisesti tässä infogrammissa), käytämme yksinkertaista koodia toistamaan tietueita:
tavallinen taulukkoiteraatio
the_title();
kaiku "";
the_content();
kaiku "";
loppuun asti;
Toinen tapa: silmukan kutsuminen mistä tahansa mallin osasta,
$args = array("post_type" => "arvostelut", "posts_per_page" => 10);//tässä ilmoitamme, minkä tyyppistä viestiä haluamme käydä läpi ja kuinka monta viestiä yhdellä sivulla on
$silmukka = new WP_Query($args);// saada kyselyn tulos silmukkamuuttujaan
while ($silmukka->have_posts()) : $silmukka->viesti(); // sitten vakioiteraatio taulukon läpi
the_title();
php the_post_thumbnail(array(150,150)); //hae viestin pikkukuva
kaiku "";
the_content();
kaiku "";
loppuun asti;
Toivottavasti pidit siitä ja artikkelista oli hyötyä, silti ensimmäinen viesti. Tällaisen yksinkertaisen työkalun myötä wordpressistä on tullut täysimittainen cms, vaikka se sijoittuu edelleen blogiksi.
Ensi kerralla haluaisin paljastaa sellaisen upean ominaisuuden kuin taksonomiat ja mukautetut kentät
Tunnisteet: wordpress, cms, verkkosivujen kehitys, wordpress 3.3