$post_type ( rida) mida soovite oma postituse tüübiks nimetada, kasutatakse seda nime edaspidi paljude funktsioonide parameetrites, pidage seda meeles. Lisaks ei saa pealkirjadena kasutada järgmisi WordPressi reserveeritud sõnu:
- manus
- läbivaatamine
- nav_menu_item
- custom_css
- customize_changeset
- tegevust
- tellida
- teema
- autor
Vaikimisi: avaliku argumendi väärtus. external_from_search( loogiline)
- tõene – välistage seda tüüpi kirjed saidi otsingutulemustest,
- vale – ära välista.
Vaikimisi: avaliku parameetri vastupidised väärtused. show_in_nav_menus( loogiline), kas seda tüüpi postituste elemendid tuleks saidi menüüsse lisamiseks kättesaadavaks teha.
Vaikimisi: avaliku argumendi väärtus. show_ui( loogiline), kas seda tüüpi kirjete redigeerimiseks ja lisamiseks on vaja administraatori paneelil lisada standardliidest.
Vaikimisi: avaliku argumendi väärtus.
Näita_menüüs ( loogiline|rida), kas administraatori menüüsse on vaja üksusi lisada.
Vaikimisi: argumendi show_ui väärtus. show_in_admin_bar ( loogiline), kas seda tüüpi uue kirje loomiseks on vaja administraatori paneelis linki lisada.
Vaikimisi: argumendi show_in_menu väärtus. menu_position( täisarv) korralduse järjekord administraatori paneeli menüüs.
menu_icon( rida) menüü ikooni absoluutne URL. Optimaalne pildi eraldusvõime on 16x16 pikslit.Lisaks tutvustas WordPress 3.8 sisseehitatud ikoonipaketti – saad kasutada ükskõik millist neist ikoonidest, määrates lihtsalt selle nime parameetri väärtusena, näiteks dashicons-cart.
Vaikimisi kasutatakse tavaliste postituste ikooni. delete_with_user( loogiline) kas kasutajat blogist kustutades tuleks automaatselt kustutada kõik tema avaldatud seda tüüpi kirjed?
Vaikimisi: false. hierarhiline ( loogiline), kas seda tüüpi postitustel peaks olema hierarhia.
Vaikimisi: false. has_archive( loogiline|rida), kas seda tüüpi postitustel peaks olema oma arhiivileht. Parameetri väärtuseks saate määrata arhiivilehe otsetee.
Vaikimisi: false. uuesti kirjutama( massiivi|loogiline) määrab URL-ide püsilinkide reeglid. Kui määrate selle parameetri väärtuseks false, siis püsilinkide reegleid ei looda.
Nälkjas ( rida) silt, mida kasutatakse seda tüüpi postituste puhul (vaikimisi on postituse tüübi nimi) koos_front ( loogiline) kas lisada püsilinkide (vaikimisi - true) voogudele väärtus $wp_rewite->front ( loogiline) kas seda tüüpi postituste jaoks on vaja luua RSS-voog (vaikimisi - parameetri has_archive väärtus) lehtedele ( loogiline) kas registreeritud tüüpi postituste puhul peaks olema lubatud lehekülgede lisamine(vaikimisi on tõene) toetab ( massiivi), millised tuleb seda tüüpi kirjete redigeerimiseks lehtedele lisada.
- pealkiri – väli postituse pealkirja sisestamiseks
- toimetaja - tekstiredaktor
- väljavõte — “Tsitaadi” metakast
- autor — “Autori” metakast
- pisipilt – metakast "Postita pisipilt" (lisaks peab teie teema neid toetama)
- kommentaarid — metakast "Kommentaarid" (kui see on määratud, on registreeritud tüüpi postituste kommenteerimine lubatud)
- trackbacks — metakast "Saada tagasilinke"
- kohandatud väljad – metakast „Kohandatud väljad” (kohandatud väljasid toetatakse igal juhul)
- redaktsioonid — metakast "Redaktsioonid" (kui see on määratud, luuakse seda tüüpi postituste versioonid andmebaasi)
- page-attributes – metakast „Lehe atribuudid” võimalusega valida ülemelement ja seada järjestus menu_order
- post-formaadid - "Format" metakast, lugege lisateavet postituste vormingute kohta. taksonoomia ( massiivi) selle postituse tüübi jaoks kasutatavate taksonoomiate massiiv, näiteks kategooria või post_tag . Funktsiooni abil saate määrata ka taksonoomiaid.
Postituse tüübi registreerimise näide
Kui te ei tea, kuhu koodi sisestada, kleepige see oma praeguse teema faili functions.php.
add_action ( "init" , "true_register_products" ) ; // Kasutage funktsiooni ainult init konksu sees function true_register_products() ( $labels = array ( "nimi" => "Tooted" , "ainsuse_nimi" => "Toode" , // administraatori paneel Lisa->Funktsioon"add_new" => "Lisa toode" , "add_new_item" => "Lisa uus toode", // sildi pealkiri |
Looge kohandatud postituse tüüp Artiklid kohandatud kategooriatega (kohandatud taksonoomia) Artiklite kategooria.
Minu puhul on kõik standardkirjed tooted, seega kuvame artikleid kohandatud kirjete kaudu.
Funktsioonide failis functions.php registreerime kohandatud postituse tüübi Artiklid:
Funktsioon wptp_create_post_type() ( $labels = array("nimi" => __("Artiklid"), "ainsuse_nimi" => __("Artiklid"), "add_new" => __("Uus artikkel"), "add_new_item" => __("Lisa uus artikkel"), "edit_item" => __("Muuda artiklit"), "new_item" => __("Uus artikkel"), "view_item" => __("Kuva artikkel"), "search_items" => __("Otsi artikleid"), "not_found" => __("Artikleid ei leitud"), "not_found_in_trash" => __("Prügikastist artikleid ei leitud"),); $args = array( "labels" => $sildid, "has_archive" => true, "public" => true, "hierarhiline" => false, "menu_position" => 5, "supports" => array("pealkiri", "toimetaja" , "väljavõte", "kohandatud väljad", "pisipilt")); register_post_type("artiklid", $args); ) add_action("init", "wptp_create_post_type");
Kui soovite, et kohandatud postitustes kuvataks standardkategooriad, linkige need kategooriate taksonoomiaga:
"taxonomies" => array("kategooria"),
Kui loote kohandatud postituste jaoks ka kohandatud taksonoomiaid, peate need linkima loodud taksonoomiatega; kui võtame alloleva näite, on need artiklid_kategooria
"taxonomies" => array("artiklite_kategooria"),
Seejärel registreerime kohandatud artiklite postitustüübi jaoks „artiklikategooria” taksonoomiad, et erinevad postitused kuuluksid erinevatesse kategooriatesse.
Funktsioon wptp_register_taxonomy() ( register_taxonomy("artiklite_kategooria", "artiklid", array("labels" => array("name" => "Artikli kategooriad", "ainsuse_nimi" => "Artikli kategooria", "search_items" => " Otsi artiklite kategooriatest", "all_items" => "Kõik artiklite kategooriad", "edit_item" => "Muuda artiklikategooriaid", "update_item" => "Uuenda artikli kategooriat", "add_new_item" => "Lisa uus artikli kategooria", "new_item_name" => "Uue artikli kategooria nimi", "menüü_nimi" => "Artikli kategooria", "hierarhiline" => true, "sort" => true, "args" => array("orderby" => "term_order"), "show_admin_column" => true)); ) add_action("init", "wptp_register_taksonoomia");
Kohandatud taksonoomia jaoks saate muuta nälkja ilusamaks, et see ei oleks artiklite_kategooria, kuid peate veenduma, et selliseid nälkjaid pole enam teistel lehtedel või postitustes, vastasel juhul on probleeme:
"rewrite" => array("slug" => "blogi"),
Nälkjate vahetamisel peate administraatori paneelil värskendama sätteid "Püsilingid", vastasel juhul kuvatakse soovitud lehe asemel tõrketeade 404.
Rohkem näiteid leiate siit. Aga see aitas kogu selle koodi korda seada, mille eest olen autorile väga tänulik.
Fail single.php vastutab kohandatud postituse välimuse eest, kuid kohandatud postituse välimuse muutmiseks saate luua faili single-(postituse_tüüp).php – minu puhul on see single-articles.php koos oma sisu.
Nüüd peate lehel kuvama kohandatud postitusi. Vaikimisi vastutab fail index.php kohandatud postituste arhiivi kuvamise eest. Kuid saate luua faili, mis vastutab teie taksonoomias kohandatud kirjete kuvamise eest.
1. variant on kõige õigem. Taksonoomias kuvame kirjeid samamoodi nagu tavalises kategoorias.
Selleks looge fail taksonoomia-(taksonoomia).php - minu puhul on selleks taksonoomia-articles_category.php ja selles kuvame tavalist tsüklit, nagu kategooria tavakirjete puhul:
Failis tax-item.php kuvame andmed, mida peame igast postitusest hankima, näiteks pealkirja, postituse lingi, pisipildi ja väljavõtte.
Failis pagenation.php kuvame lehekülgede sellises vormingus.
Tsükkel ei ole muudetav, lehekülgede vahetamine toimib suurepäraselt. See on parim valik kohandatud taksonoomiate kuvamiseks.
Variant 2 – kui kohandatud taksonoomiaid pole, saate kõik kohandatud postitused lihtsalt hankida arhiivi kujul
Selleks loome mallis failiarhiivi-(post_type).php - minu puhul saab selleks archive-articles.php , milles, nagu taksonoomias, kuvame tavalise tsükli, ainult et selle asemel Taksonoomia pealkiri kuvame kohandatud postituse tüübi nime :
Selle valiku korral, kui kohandatud postituse jaoks pole arhiivilehte loodud, saate kõigi kohandatud postituste loendi otselingi BLOG_URL?post_type=(post_type) või minu puhul http://site.com/ kaudu. artiklid/ .
Valik 3. Lihtsalt kuvage kõik kohandatud artiklite kirjed lehel antud malliga
"artiklid", "postitused_lehe kohta" => -1); $loop = new WP_Query($args); while ($loop->have_posts()) : $loop->the_post(); get_template_part("include/tax-item"); lõpp; ?>get_template_part("include/tax-item"); – failis tax-item.php kuvan postituse sisu, mida mul on vaja tsükli sees olevate postituste kuvamiseks (pealkiri, pisipilt, kuupäev, tsitaat jne)
See valik kuvab kõik lehel olevad artiklid, olenemata taksonoomiatest (kategooriatest).
Ja kui meil on vaja iga kategooriat eraldi kuvada oma uudistega, siis kasutame esimest ülalkirjeldatud võimalust.
Seda öeldes, kui kasutate Yoast SEO pistikprogrammi ja kasutate selle riivsaia:
Seejärel, kui valite plugina seadetes jaotises "Taksonoomia postituste tüüpide jaoks leievarusena kuvatav taksonoomia", saate leiupurus lingi kategooriale, kuhu uudised kuuluvad; koos muude kohandatud postituste kuvamise võimalustega. , seda ei saanud teha.
Teave kohandatud postitustüüpide kohta WordPressis (CPT, kohandatud postituste tüübid WordPressis), kuidas luua ja konfigureerida, lisada kategooriaid ja silte, kuidas luua pesastatud URL-e /postituse tüüp/kategooria/postitus või http://example.com/post_type/ kategooria/ postitus/ .
Samuti kirjeldatakse, kuidas laiendada WordPressi standardset funktsionaalsust, luues uut tüüpi postitusi, mida saab kasutada erinevatel eesmärkidel: oma portfelli lisamine, filmi- ja muusikaregister, tootekataloog, sündmuste kalender, isegi oma väikese veebi tegemine. poodi (sest suur on parem kasutada valmislahendusi nagu WooCommerce) või suhtlusvõrgustikku ja palju muud selles vaimus.
Esiteks üldine teave, seejärel üksikasjad.
Postituste kohta WordPressis: kus neid andmebaasis hoitakse ja kuidas neid hankida
Absoluutselt kõik WordPressi postitused, millest allpool räägitakse, on salvestatud ühte tabelisse: wp_posts. Postituse metaandmed, näiteks metakastide andmed, salvestatakse tabelisse wp_postmeta.
Toon näite, kuidas saada 10 tüüpi postitust (standardne Postitused administraatori paneelil).
Üldiselt ei ole vaja andmeid konkreetselt nõuda. Mallides on need juba eelinstallitud, näiteks single.php-s on kirje andmed juba tsüklis töötlemiseks saadaval
If (have_posts()) ( while (have_posts()) ( the_post(); // Siin kasutame tsükli andmeid, näiteks the_title() jne ) )
Kui andmeid on vaja hankida väljaspool tsüklit või malli, kasutatakse päringut WP_Query
$args = array("post_type" => "postitus", // Postituse tüüp: leht, manus, ... "posts_per_page" => 10, // 10 postitust korraga); $p = hanki_postitused($args); // Andmeid saab tsüklina laiendada if (!empty($p)) ( foreach ($p kui $post) ( setup_postdata($post); ?> ">= the_title() ?>
Andmeid saab hankida SQL-päringu abil:
Globaalne$wpdb; $query = "SELECT * FROM ($wpdb -> postitused) WHERE post_type = "postitus" LIMIT 10"; $p = $wpdb -> saada_tulemused($päring); exit(print_r($p)); // $p sisaldab nüüd massiivi postitusandmetega
Kõik kolm ülaltoodud meetodit annavad sama väljundtulemuse.
Eelseadistatud postitustüübid WordPressis: postitus, leht, manus, redaktsioon, nav_menu_item
Kirjed või postitused (postitus)
Kõikidest WordPressis leiduvatest tüüpidest enimkasutatav üksus on postitused (ehk postitused). Kasutatakse blogipostituste jms. Sellel on 2 eelseadistatud taksonoomiat: pealkirjad, mida nimetatakse ka kategooriateks (kategooria) ja sildid, mida tuntakse ka siltidena (post_tag).
Taksonoomiat kasutatakse postituste sortimiseks ja korraldamiseks.
Kategooriad erinevad siltidest selle poolest, et neil on puu struktuur (neid saab üksteise sisse pesastada).
Märgised on üksteisest sõltumatud üksused ja on sel moel mõnevõrra sarnased Recordsiga.
Samuti luuakse vaikimisi kirjetest WordPressi saidi RSS-voog.
Kirjete jaoks kasutatakse järgmisi mallifaile (prioriteedi järjekorras):
- ühepostitus.php
- üksik.php
- ainsus.php
- index.php
Mallifaile otsitakse prioriteedi järjekorras ülalt alla. Kui teemast leitakse mallifail, kasutatakse seda ja otsing peatatakse.
Leheküljed
Lehti kasutatakse peamiselt teeninduslehtedena, sihtlehtedena, maandumislehtedena, entsüklopeediakogudena jms. Neil on puutaoline hierarhia, st neid saab üksteise sisse pesastada, mis kajastub viimase lehe aadressis (ülemate otseteed on URL-i ahelas olemas) ja selles rollis on võimalik anda neile sorteerimisel eelisõigus.
Sihtlehe loomiseks võite kasutada kahte võimalust.
Looge spetsiaalne lehe mall
Looge kuskil teema sees juur- või alamkataloogis fail suvalise nime ja php laiendiga, näiteks landing.php. Sees saate paigutada absoluutselt igasuguse malli, mis võib saidi teistest lehtedest täiesti erineda. Kuid peamine on asetada see kood faili algusesse:
Malli nimi on spetsiaalne silt, mis ütleb WordPressile, et see fail on spetsiaalne mall.
Nüüd mis tahes lehe loomisel ja redigeerimisel vaadake parempoolset plokki nimega Lehe atribuudid, selle jaotises Malli saate valida meie ainulaadse sihtlehe.
Lehtede puhul kasutatakse järgmist mallide hierarhiat. Nagu kirjete puhul, märgin ma prioriteetsuse järjekorras:
- (mall).php
- leht-(lehe_silt).php
- leht-(leht_ID)
- page.php
- ainsus.php
- index.php
Manused, manused või manused
Utiliidi tüüp, mis on mõeldud postituse, lehe või muu sarnase redigeerimisel üleslaadija kaudu üleslaadija kaudu üles laaditud failide (pildid, heli, video jms) kohta teabe salvestamiseks postituse, lehe vms redigeerimisel: suurus, kaal, kirjeldus, milline postitus või leht nad on kiindunud ja muud sellised.
Saate hankida manuseid, et nendega hiljem manipuleerida, kasutades järgmist koodi:
$args = array("post_type" => "attachment", // Postituse tüüp: manus "post_status" => "inherit", // Vaikimisi on "avalda" ja sellega ei saa te manuseid vastu võtta, seega näitame manuse eristaatus " pärida"); $p = hanki_postitused($args); exit(print_r($p)); // Väljundis on massiiv koos manustega
Manuste mallide hierarhia:
- (mime-tüüpi).php
- (mime-alatüüp).php
- (mime-tüüp-alatüüp).php
- manus.php
- üksik.php
- ainsus.php
- index.php
Revisjonid, mustandid või muudatused
Redaktsioonid, tuntud ka kui muudatused, on mustandite postituste versioonid, mis luuakse automaatselt, kui kirjutate artiklit WordPressi administraatoripaneelil või salvestate artiklit ilma seda tegelikult avaldamata.
Kirjutamise käigus salvestatakse iga artikli puhul vaikimisi iga mustandi versioon. Saate võrrelda kahte erinevat versiooni ja saate tagasi pöörduda vajaliku versiooni juurde.
Sama artikli paljude versioonide salvestamine on üsna kulukas ja sageli mõttetu (kuigi ilmselt oleks õigem jätta kõik vaikimisi, puhastades regulaarselt vanu redaktsioone, kasutades selleks pluginat, näiteks WP Optimize), seega on Redaktsioonide salvestatud versioonide arv. saab muuta kahe valikuga:
- Kasutage filtrit wp_revisions_to_keep
- Registreeruge saidil wp-config.php //Keela redaktsioonid minimaalse võimaliku väärtuseni define("WP_POST_REVISIONS", 0);
Võimalikud väärtused:
- tõene või -1: salvestab mustandi kõik versioonid. Vaikimisi valik
- väär või 0: keelab mustandite salvestamise, välja arvatud 1 automaatsalvestamine
- Täisarv, mis on suurem kui null: määratud arv mustandversioone salvestatakse + 1 automaatsalvestamine. Vanad versioonid, mis määratud arvu sisse ei mahu, kustutatakse automaatselt
Navigeerimismenüü üksused (nav_menu_item)
Navigeerimismenüü (nav_menu_item) on postituse tüüp, mis salvestab teavet WordPressi navigeerimisüksuse kohta. Esimene ja seni ainus kirjetüüp, mida nagu muud tüüpi kirjed ei kasutata, saavad saidil käitamise ja kuvamise andmed oma eraldi funktsioonid.
Samuti ei ole navigeerimismenüüd vaikimisi lubatud. Nende lubamiseks peate deklareerima nende toetust:
- Kirjutage add_theme_support("menüüd");
- Või registreerige menüüruum, kasutades register_nav_menu() , siis lülitatakse menüü tugi automaatselt sisse
Kasutage andmete hankimiseks käsku wp_nav_menu(), kuna WP_Query ei tööta ja see on postituse tüübi nav_menu_item funktsioon
// See kood töötab wp_nav_menu(); // Kuvab esimese registreeritud mittetühja menüü // Kuid allolev kood ei tööta $args = array("post_type" => "nav_menu_item", // Postituse tüüp: leht, manus, ...); $p = hanki_postitused($args); exit(print_r($p)); // Väljund on tühi massiiv
Kohandatud postituse tüüp (CPT WordPress)
Nüüd jõuame peamise asjani - tööriistani, mis võimaldab teil laiendada standardset WordPressi ajaveebifunktsiooni lõpututele võimalustele: kohandatud kohandatud postituse tüüp.
Lihtsaim näide selle kohta, kuidas saate registreerida meie uut tüüpi postituse sheensay_product
Add_action("init", "sheensay_post_type"); function sheensay_post_type() ( register_post_type("sheensay_product", array("labels" => array("name" => "Tooted", "singular_name" => "Tooted",), "public" => true, // tüüp kirjed on otsimiseks ja muuks sarnaseks avatud "has_archive" => true, // Luba arhiivi lehed "supports" => array("title", "editor", "thumbnail", "comments"), // Luba arhiivi lehtede tugi pealkiri, toimetaja , pisipildid, kommentaarid));)
Siin on sheensay_product uue postituse tüübi nimi. See ei tohiks olla vastuolus teiste süsteemis osalejatega; selle kohta leiate lisateavet allpool.
Selles teostuses toimib see ka seda tüüpi postituste otseteena, see tähendab, et see on URL-is olemas. Kui soovite määrata näiteks teistsuguse otsetee tooted, tehke nagu allolevas näites
Add_action("init", "sheensay_post_type"); function sheensay_post_type() ( register_post_type("sheensay_product", array("labels" => array("name" => "Tooted", "singular_name" => "Tooted",), "public" => true, "rewrite" => array("slug" => "products"), // Silt Kohandatud postituse tüüp "has_archive" => true, "supports" => array("pealkiri", "toimetaja", "pisipilt"),) ) ;)
Kuidas valida uuele postitustüübile õiget nime
Järgmised nimed on WordPressis reserveeritud ja neid ei saa kasutada uue postituse tüübi nimena:
- manus
- läbivaatamine
- nav_menu_item
- tegevust
- teema
- tellida
Samuti peaksite vältima eesliite wp_ kasutamist nime alguses, kuna see võib põhjustada konflikte WordPressi tuuma tulevaste versioonidega.
Parim on, kui lisate oma saidi, toote või brändi nimega seotud suvaliste eesliidetega nimed, näiteks sheensay_product, siis väldite võimalikke konflikte
Kuidas teha kohandatud taksonoomiat
Kohandatud postitustüübid võivad kasutada postituste taksonoomiaid, näiteks kategooriaid (kategooriaid) või silte (silte), kuid teil võib olla oma taksonoomiaid.
Add_action("init", "sheensay_post_type"); function sheensay_post_type() ( // Registreerige taksonoomia register_taxonomy("sheensay_product_type", "sheensay_product", array("label" => "Types", "hierarchical" => true, // Kui TRUE), on taksonoomia analoogne pealkirjadega (kategooriad). Kui FALSE (vaikimisi), muutub taksonoomia siltide (siltide) analoogiks: "rewrite" => array("slug" => "product-type"),)); // Kohandatud postituse tüüp (kohandatud postituse tüüp) register_post_type ("sheensay_product", array("labels" => array("name" => "Products", "singular_name" => "Tooted",), "public" => true, " rewrite" => array("slug " => "products"), // Siin on defineeritud CPT silt "has_archive" => true, "supports" => array("pealkiri", "redaktor", "pisipilt") , // Luba pealkirja, redaktori, pisipildi tugi )); )
Kohandatud postitustüüpide mallid
Kõik sõltub sellest, millist teavet kuvatakse. Valikuid võib olla 3: konkreetne postitusmall, postitusarhiivi mall ja taksonoomia mall
Postituslehe mall
Loetletud prioriteetsuse järjekorras
- üksik-(postituse_tüüp).php
- üksik.php
- index.php
Postitusarhiivi mall
- arhiiv-(postituse_tüüp).php
- arhiiv.php
- index.php
Kohandatud taksonoomia mall
- taksonoomia-(taksonoomia_nimi)-(termin_nimi).php
- taksonoomia-(taksonoomia_nimi).php
- taksonoomia.php
- arhiiv.php
- index.php
Siin on taksonoomia_nimi sheensay_product_type ja termini_nimi on administraatoripaneelil loodava taksonoomia silt.
Kuidas hankida kohandatud postituse tüübi andmeid (Custom Post Type WordPress) ja kuvada need saidil
Saate hankida WordPressis kohandatud postituse tüübi andmeid oma veebisaidil kuvamiseks, kasutades samu meetodeid nagu tavalised postitused ja lehed
$args = array("post_type" => "sheensay_product", // Määrake meie uus postituse tüüp "posts_per_page" => 10,); $p = hanki_postitused($args); foreach ($p kui $post) ( setup_postdata($post); ?> ">= the_title() ?>
Kui me räägime põhipäringust, mille jaoks laaditakse andmed näiteks avalehel või tavalistel arhiivilehtedel kuvamiseks, siis suvalised postitustüübid on seal keelatud.
Nii et kui soovite, et mis tahes loodud postituse tüüp ilmuks näiteks arhiivilehtedel koos tavaliste postitustega, peate muutma postituse eellaadimise filtrit
// Ühendage meie "sheensay_product" standardse "postituse" ja "lehega" 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 klass kohandatud taksonoomiaga kohandatud postitustüüpide loomiseks
Allpool on klass, mille abil saate registreerida mis tahes kohandatud postituse tüübi, millel on oma taksonoomia, ja URL näeb välja selline
http://example.com/products/type/product
URL-i genereerimiseks peate avama püsilingi seaded /wp-admin/options-permalink.php ja määrama mis tahes tüüpi üldsätted peale lihtsate
Allpool on klassi kood ise. Te ei pea selles muudatusi tegema, kuid saate muuta postituse tüübi silti päris lõpus real new Sheensay_Product("products");
Kood ise on kirjutatud või keeles . Eelistatav on esimene valik, kuna sel juhul ei kaota te aktiivse teema muutmisel juurdepääsu uue postituse tüübi sisule.
?p=1713 * */ final class Sheensay_Product { // Ярлык произвольного типа записи по умолчанию private $post_type = "продукция"; function __construct($post_type = "") { // Переопределяем значение ярлыка по умолчанию if ($post_type) $this -> postituse_tüüp = $postituse_tüüp; /* * Registreeri kohandatud postituse tüüp */ add_action("init", array($this, "sheensay_cpt_product")); /* * URL-i filtreerimine */ add_filter("postituse_tüüp_link", array($this, "toote_permalink_structure"), 10, 2); /* * Lehekülgede toimimiseks */ add_action("generate_rewrite_rules", array($this, "fix_product_category_pagination")); ) function sheensay_cpt_product() ( /* * Registreerige kohandatud taksonoomia uue postituse tüübi jaoks */ register_taxonomy("sheensay_product_type", "sheensay_product", array("label" => "Tüübid", "hierarchical" => true, "query_var" " = > true, "rewrite" => array("slug" => $this -> post_type),)); /* * Registreerige uus postituse tüüp */ $labels = array("name" => "Tooted" , // Põhinimi "singular_name" => "Tooted", // Lisa "add_new" => "Lisa uus", // Külgriba uue kirje lingi nimi "add_new_item" => "Lisa uusi tooteid" , // Pealkiri redaktoris uue kirje lisamisel); $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("pealkiri", "toimetaja", "pisipilt", "väljavõte" ), "rewrite" => array( "slug" => $this -> post_type . "/%sheensay_product_type%", "with_front" => false,), "has_archive" => $this -> postituse_tüüp,); register_post_type("sheensay_product", $args); if (current_user_can("manage_options")) // Olge selle funktsiooniga ettevaatlik. See lähtestab kõik URL-i tuvastamise reeglid. Parem on seda kommenteerida pärast kogu töö lõpetamist 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 ($toote_tüüp_term)) $postituse_link = str_ase > postituse_tüüp . "/([^/]+)/page/?((1,))/?$"]); $wp_rewrite -> reeglid = array($this -> postituse_tüüp . "/?$" => $wp_rewrite -> register . "?postituse_tüüp=sheensay_product", $this -> postituse_tüüp . "/page/?((1,))/?$" => $wp_rewrite -> register . "?post_type=sheensay_product&paged=" . $wp_rewrite -> preg_index(1), $this -> postituse_tüüp. "/([^/]+)/page/?((1,))/?$" => $wp_rewrite -> register . "?sheensay_product_type= ". $wp_rewrite -> preg_index(1) . "&paged=" . $wp_rewrite -> preg_index(2),) + $wp_rewrite -> reeglid; ) ) /* * Käivita klass * Sulgudes saab määrata postituse tüübi sildi nime */ new Sheensay_Product("tooted");
Nüüd saate administraatori paneelil registreerida uusi tooteid ja nende tüüpe
a! Sisuhaldussüsteem WordPress pälvis tunnustust mitmeks aastaks, kuid tõeliseks läbimurdeks oli rekordite tüüpideks eraldamise oskuse rakendamine. Selles õppetükis vaatleme lähemalt kohandatud postituste tüüpe, nende loomist ja kasutamist.
Natuke ajalugu
Praktikas tekkisid kohandatud postituse tüübid üsna kaua aega tagasi, täpsemalt alates 17. veebruarist 2005, mil WordPress 1.5 Staatiliste lehtede jaoks on andmebaasi välja post_type kaudu lisatud kohandatud tüüpide tugi. Funktsioon Wp_insert_post() on kasutusel olnud sellest ajast peale WordPress 1.0 nii et kui välja post_type rakendati versioonis 1.5, oli selle funktsiooni abil üsna lihtne täita.
Ja alles versioonis 2.8 ilmus kohandatud tüüpide loomiseks loodud funktsioon register_post_type() ja "öistes ehitustes" oli saadaval ka muud kasulikku ning juba 2.9-st said funktsioonid kõigile kättesaadavaks.
Mis nüüd?!
Kohandatud postituse tüüp pole midagi muud kui tavaline postitus (artikkel), millel on andmebaasis konkreetne välja väärtus post_type. Tavalises postituses on väljal post_type väärtus postitus, leht on oluline lehel ja nii edasi. Nüüd saame aga luua oma tüübid, et täpsustada postituses sisalduva sisu eripära. Saate luua kohandatud postitustüüpe raamatute, filmide, naljade, toodete ja kõige muu jaoks.
Kui teete õigesti, saate vaid mõne koodirea abil saavutada järgmised tulemused:
- Asetage kohandatud tüüp administraatori ala põhipaneelile koos alammenüü üksustega: kõigi seda tüüpi kirjete loend ja looge ka selle tüübiga uus kirje;
- Looge seda tüüpi postitustest arhiiv, st tehke kohandatud tüübi jaoks midagi sarnast avalehega;
- Looge kategooriaid ja silte, millele pääseb juurde kohandatud postitustüüpide ja kohandatud taksonoomiate abil.
Erinevat tüüpi sisul on erinevad andmenõuded. Tavaliste postituste puhul soovite lisada autori, kategooria ja kuupäeva. “Raamat” tüüpi kirje puhul soovin, et saaksin täpsustada raamatu autori, lehekülgede arvu, žanri, kirjastaja ja muud konkreetsed andmed. Seda on lihtne saavutada, kasutades andmete sisestamiseks kohandatud (metakastide) alasid.
— alad lisaandmete sisestamiseks otse kirje loomise lehel. Need alad muudavad kohandatud postitustüüpidega töötamise lihtsamaks.
Kohandatud postitustüüpidega töötamine
Kohandatud postitustüüpide tõhusaks loomiseks ja kasutamiseks peaksite teadma järgmist.
- Kohandatud postitustüüpide loomine;
- Kohandatud taksonoomia loomine;
- Kohandatud andmealade loomine.
Kohandatud postitustüüpide loomine
Esimese asjana peate looma kohandatud postituse tüübi. Ideaalis loote kohandatud postitustüüpide käsitlemiseks pistikprogrammi, kuid võite kasutada ka oma teema faili functions.php.
1 |
|
See on lihtsaim vorm tüübi loomiseks, millel pole praktiliselt mingeid sätteid. Uue postitustüübi väljatöötamiseks kasutame mõnda kõige sagedamini kasutatavat valikut ja lisame need varem tühjale $args massiivile.
1 | funktsioon my_custom_post_product() ( |
- sildid— seda siltide massiivi kasutatakse teemas loodava kohandatud postituse tüübi kirjeldamiseks./li>
- kirjeldus- kokkuvõte loodava kohandatud postituse tüübi kohta, mida see teeb ja miks me seda kasutame.
- avalik— kas kasutada kohandatud tüüpi avalikult ja näidata seda haldusalas. Sel juhul on tõde kindlaks tehtud.
- menüü_positsioon— meie tüüpi menüüelemendi asukoht peamisel administraatoripaneelil. Väärtus 5 tähendab, et üksus installitakse kohe pärast menüükäsku „Kirjed”, kui 10 tähendab pärast üksust „Meediumifailid” jne.
- toetab— see valik sisaldab massiivi, mis kirjeldab neid välju, mida saame kirje loomise lehel redigeerida. See tähendab, pealkiri - ilmub väli postituse nime sisestamiseks, toimetaja - kuvatakse tekstiala postituse teksti sisestamiseks jne. Samuti on näidatud kohandatud taksonoomia, mida kasutatakse toote_kategooria .
- on_arhiiv- kui see on määratud tõeseks, luuakse ümberkirjutusreegel, mis võimaldab teil saada meie tüüpi kirjete loendi aadressil http://mysite.com/product/
Pärast selle koodi installimist faili function.php peaksite nägema kohandatud postituse tüübi menüüd. Nüüd on võimalik kirjet lisada ja kirjete loendit vaadata.
Kuid need pole kõik argumentide massiivi valikud; leiate täieliku valikute loendi ja kõik kohandatud tüüpide võimalused.
Interaktiivsed hoiatused
WordPress genereerib mõned kasutaja toimingutest käivitatud sõnumid. Samuti saame luua sarnaseid sõnumeid, et teavitada kasutajat tüüpidega töötamisel. Seda teeb post_updated_messages.
1 | funktsioon my_updated_messages( $messages ) ( |
Pange tähele, et selle ühe funktsiooni abil saate määrata kõigi kohandatud postituste tüüpide jaoks märguandeid. Kui te tüübi nime ei määra, kasutatakse kõigi kohandatud tüüpide puhul hoiatusi.
Kontekstuaalseid vihjeid rakendatakse ja kasutatakse harva. Kasutajana pole ma seda funktsiooni kunagi kasutanud, kuid olen kindel, et keegi neid ikka kasutab. Loome siis sellise kontekstuaalse abi.
Kontekstipõhised vihjed asuvad paremas ülanurgas, ekraani seadete vahekaardi lähedal.
1 | function my_contextual_help( $contextual_help , $screen_id , $screen ) ( $kontekstuaalne_abi = " Sellel lehel on kõigi saidil müüdavate toodete loend. Kirjed on kronoloogilises vastupidises järjekorras, kusjuures viimased loetletud üksused on need, mille lisasime esimesena. Saate vaadata/muuta iga toote üksikasju, klõpsates selle nimel, või teha hulgitoiminguid rippmenüü abil, valides mitu üksust. ) elseif ( "toode" == $ekraan -> id ) ( $kontekstuaalne_abi = " Sellel lehel saate luua toote või muuta selle kohta olemasolevaid andmeid. Täitke kindlasti täiendavad väljad. }
|
Sellise vihje kuvamiseks peame teadma ekraani ID-d. Kui peate loomise ajal ekraani ID välja selgitama, tehke lihtsalt nii:
echo $screen -> id ; |
Kohandatud taksonoomia
Tavalise ajaveebi jaoks piisab organisatsioonilise struktuuri loomiseks kategooriatest ja siltidest. Kuigi kohandatud postitustüüpide puhul sellest alati ei piisa. Kohandatud taksonoomia võib selle probleemi lahendada. Meie puhul taksonoomia nimega "Tootekategooriad", mida kasutatakse ainult kohandatud tüübiga "Tooted" postituste jaoks.
Kohandatud taksonoomia loomise protsess on peaaegu identne kohandatud postitustüüpide loomisega. Vaatame meie näidet:
1 | funktsioon minu_taksonoomiad_toode() ( |
Nagu kohandatud tüübi loomisel, moodustasime siltide massiivi ja viitasime sellele, et loodud taksonoomia jaoks on asjakohane hierarhiline struktuur (st võib olla nii ema- kui ka alamelemente) – see on tüüpiline tavapostituste kategooriate puhul. Vastasel juhul, kui struktuur pole hierarhiline, luuakse tavalised sildid. Lisateavet taksonoomia kohta saate lugeda.
Täiendavad andmepiirkonnad
Postituse redigeerimise lehel võite näha täiendavaid alasid või plokke andmete sisestamiseks (metakastid). Kõik teavad standardseid, näiteks kategooria või siltide valimist. Ka mõnes teemas on valikud, mis võimaldavad postitusele pildi lisada vms.
Kuna loome kohandatud tüüpi "Tooted", siis ilmselgelt vajame toote hinda, vaatame kohandatud toodete loomise protsessi.
Loomisprotsessi võib jagada kolmeks etapiks:
- Ploki enda määratlus;
- sisu määratlemine (millised väljad plokis on);
- Sisestatud andmete töötlemise algoritmide kirjeldus.
Metakastide definitsioon
1 | add_action( "add_meta_boxes" , "product_price_box" ) ; |
Ülaltoodud kood loob ploki järgmiste parameetritega:
- toote_hinna_kast— metakasti kordumatu tunnus (see ei pea ühtima funktsiooni nimega);
- Toote hind— metakasti nimi, mida administraator lehel näeb;
- toote_hinna_kasti_sisu— funktsioon, mis kuvab akna sisu;
- toode— kohandatud postituse tüübi nimi, mille juurde metakastid kuuluvad;
- pool— ploki asukoht lehel (külg, tavaline või edasijõudnu – vaikimisi);
- kõrge— metakastide prioriteetsus (antud juhul “kõrge”, plokk asub päris külgriba ülaosas. Valikud: kõrge, põhi, madal või vaikimisi – vaikimisi).
Sisu määratlus
1 | funktsioon product_price_box_content( $post ) ( |
Toote hinna sisestamiseks lisame vaid ühe välja. Pange tähele, et funktsiooni nimi vastab deklareerimisel kolmanda parameetri väärtusele (ülaltoodud kood).
Sisestatud andmete töötlemine
Viimase sammuna salvestatakse sisestatud toote hind andmebaasi.
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"] , plugina_basenimi( __FILE__ ) ) if ( "leht" == $_POST [ "postituse_tüüp" ] ) ( |
Suurem osa funktsioonidest on kontrollid. Kõigepealt kontrollitakse automaatset salvestamist, hinda ei salvestata enne, kui vajutatakse salvestamise või värskendamise nuppu. Seejärel kontrollitakse selle postituse andmete muutmise juurdepääsuõigusi ja alles pärast seda, kasutades funktsiooni update_post_meta, sisestatakse hind andmebaasi.
Loodud tüüpi postituste kuvamine blogis
Oleme läbinud kohandatud postituse tüübi loomise kõik etapid, jääb üle vaid ära kasutada oma töö vilju ja luua blogis postituste kuva vastavalt meie kehtestatud taksonoomiale.
Kuna kohandatud tüübi loomisel määrasime parameetri has_archive jaoks tõeseks, on tootetüübi kirjete loend saadaval aadressil http://mysite.com/product/ .
Kuvamiseks kasutatakse faili arhiiv-.php (meie puhul archive-product.php), kui see on olemas. Vastasel juhul kasutatakse kuvamiseks faili archive.php ja kui sellist faili teemas pole, kasutab see )
)
;
$tooted = new WP_Query( $args ) ;
if ( $products -> have_posts () ) (
while ( $products -> have_posts () ) (
$tooted -> the_post () ;
?>
<
h1>
h1>
<
div class
=
"content"
>
div>
}
}
muu (
kaja "Oh ei, süüa ei leitud!";
}
?>
Hinnanäidik
Sisestatud lisaandmed, meie puhul toote hind, saab kätte funktsiooni get_post_meta() abil. Kuna kasutame lisaks välja product_price, siis hinna väärtuse saamiseks:
Plugin kohandatud postitustüüpide loomiseks
Kui te pole oma programmeerimisvõimetes kindel, võite alati leida valmislahenduse (plugina) ja seda kasutada. Kohandatud tüübid pole erand. Sisse panema WCK kohandatud postituse tüübi looja võimaldab hõlpsasti luua WordPressi jaoks kohandatud postitustüüpe ilma kodeerimisteadmisteta.
Vaikekategooriaid kasutatakse ainult postituste jaoks. Mõne stsenaariumi korral võite siiski soovida neid kasutada kohandatud postituse tüübiga. Selles artiklis räägime teile, kuidas seda teha.
Plugina meetod
Algajatele kasutajatele soovitame kohandatud postituse tüübi loomiseks kasutada kohandatud postituse tüübi kasutajaliidese pistikprogrammi. Seda pistikprogrammi kasutades saate siduda kohandatud postituse tüübi mis tahes sisseehitatud või kohandatud taksonoomiaga, sealhulgas kategooriatega. Pärast pistikprogrammi installimist avage CPT kasutajaliides » Lisa/redigeeri postituse tüüpe, et luua uus kohandatud postitustüüp või muuta olemasolevat.
Kerige alla jaotiseni Täpsemad suvandid ja seal näete valikut Sisseehitatud maksud. Märkige ruut kategooriate kõrval ja salvestage postituse tüüp.
Kategooriate käsitsi lisamine kohandatud postituse tüübi jaoks
Kui lõite kohandatud postituse tüübi, lisades faili funktsioonis.php koodi, peate kategooria lisamiseks toetatud taksonoomiana seda koodi muutma. Kõik, mida pead tegema, on lisada see rida oma kohandatud postituse tüübi argumentidele:
'taksonoomiad' => array('kategooria'),
Võimalik, et teil on see rida juba mõne muu kohandatud taksonoomiaga koodis. Kui jah, siis peate lihtsalt selle järele lisama koma ja lisama kategooria:
'taksonoomiad' => array('teemad', 'kategooria'),
Siin on näide kogu koodist, kus lõime kohandatud postituse tüübi nimega "filmid", mis toetab kõiki sisseehitatud kategooriaid.
Funktsioon custom_post_type() ( // Määrake kohandatud postituse tüübi kasutajaliidese sildid $labels = array("name" => _x("Filmid", "Postituse tüübi üldnimi", "twentythirteen"), "ainsuse_nimi" => _x(" Film", "Postituse tüübi ainsusnimi", "kaksteistkolmteist"), "menüü_nimi" => __("Filmid", "kaksteistkolmteist"), "parent_item_colon" => __("Vanemfilm", "kaksteistkolmteist"), "all_items " => __("Kõik filmid", "kakskümmend kolmteist"), "view_item" => __("Vaata filmi", "twentythirteen"), "add_new_item" => __("Lisa uus film", "twentythirteen"), "add_new" => __("Lisa uus", "kakskümmend kolmteist"), "edit_item" => __("Muuda filmi", "twentythirteen"), "update_item" => __("Värskenda filmi", "kakskümmend kolmteist") , "search_items" => __("Otsi filmi", "twentythirteen"), "not_found" => __("Ei leitud", "twentythirteen"), "not_found_in_trash" => __("Ei leitud prügikastist", " twentythirteen"),); // Kohandatud postituse tüübi muude suvandite määramine $args = array("label" => __("filmid", "twentythirteen"), "description" => __("Filmiuudised ja ülevaated", "twentythirteen"), "labels" => $sildid, "toed" => array("pealkiri", "toimetaja", "väljavõte", "autor", "pisipilt", "kommentaarid", "revisjonid", "kohandatud" -fields",), "hierarchical" => false, "public" => true, "show_ui" => true, "show_in_menu" => true, "show_in_nav_menus" => true, "show_in_admin_bar" => true, "menu_position" " => 5, "can_export" => true, "has_archive" => true, "exclude_from_search" => false, "publicly_queryable" => true, "capability_type" => "page", // Siia lisame taksonoomiad meie CPT-le "taksonoomiad" => array("category"),); // Kohandatud postituse tüübi registreerimine register_post_type("movies", $args); ) /* Haakige toiminguga "init", nii et funktsiooni *, mis sisaldab meie postituse tüübi registreerimist, ei * tarbetult käivitataks. */ add_action("init", "custom_post_type", 0);
Kategoorialehel mitut tüüpi postituste kuvamine
Vaikimisi kuvatakse WordPressi saidi kategoorialehtedel standardne postitustüüp. Kui soovite, et teie postituse tüüp ilmuks vaikepostitustega samal kategooria lehel, peate oma funktsioonide.php faili lisama järgmise koodi:
Add_filter("pre_get_posts", "query_post_type"); funktsioon query_post_type($query) ( if(on_category()) ( $postituse_tüüp = get_query_var("postituse_tüüp"); if($postituse_tüüp) $postituse_tüüp = $postituse_tüüp; else $post_type = array("nav_menu_item", "post", " filmid"); // ärge unustage nav_menu_item'i, et menüüd saaksid töötada! $query->set("post_type",$post_type); return $query; ) )
Ärge unustage muuta filmidele oma kohandatud postituse tüübi nime.
Meie erialaks on WordPressi saitide arendamine ja tugi. Kontaktid tasuta konsultatsiooniks - ,