Register_post_type() - vă permite să înregistrați un nou tip de postare. Tipuri de postări personalizate în WordPress - register_post_types, register_taxonomy Exemple de tipuri de postări personalizate wordpress

01.07.2020 Photoshop

Returnează tipurile de postări existente (înregistrate). Puteți filtra rezultatul utilizând o varietate de criterii.

✈ 1 dată = 0,000001s = viteza luminii| 50000 de ori = 0,14s = foarte repede| PHP 7.1.11, WP 4.9.8

Nu există cârlige.

Retururi

Matrice. O listă de nume de tip de post sau o matrice de obiecte (ieșirea este configurată în parametrul $output).

Utilizare

get_post_types($args, $output, $operator); $args(matrice)
  • name => eticheta paginii => Etichete pagini => stdClass Object() description => public => 1 ierarhic => 1 exclude_from_search => publicly_queryable => show_ui => 1 show_in_menu => 1 show_in_nav_menus => 1 show_in_admin_bar => 1 meniu_position = > 20 menu_icon => capability_type => pagina map_meta_cap => 1 register_meta_box_cb => taxonomii => Array() has_archive => query_var => can_export => 1 delete_with_user => 1 _builtin => 1 _edit_link => post.php?post=% d cap => stdClass Object(edit_post => edit_page read_post => read_page delete_post => delete_page edit_posts => edit_pages edit_others_posts => edit_others_pages publish_posts => publish_pages read_private_posts => read_private_pages read => citi delete_posts => delete_pages delete_ => delete_posts delete_ => delete_pages delete_ delete_published_pages delete_others_posts => delete_others_pages edit_private_posts => edit_private_pages edit_published_posts => edit_published_pages create_posts => edit_pages) rewrite => show_in_rest => 1 rest_base => pagini rest_controller_class => WP_REST_Posts_Controller_
  • eticheta
  • etichetă_singulară
  • descriere
  • public - Boolean, dacă este adevărat, atunci vor fi selectate numai tipurile de postări publice (vezi descrierea register_post_type()).
  • interogabil_public
  • exclude_from_search
  • show_ui
  • tip_capacitate
  • edit_cap
  • edit_type_cap
  • edit_others_cap
  • publish_others_cap
  • read_cap
  • şterge_cap
  • ierarhic
  • suporturi
  • register_meta_box_cb
  • taxonomii
  • poziție_meniu
  • icon_meniu
  • permalink_epmask
  • rescrie
  • query_var
    Logic. Dacă este adevărat, atunci tipurile de postări WP încorporate vor fi returnate: pagină, postări... false - vor returna numai tipuri de postări noi.

    Tipuri de înregistrări legate de criteriul _builtin:

    • pagina media
    • atașament
    • revizuire
    • nav_menu_item - începând cu versiunea 3.0
    • tip de post personalizat - începând cu versiunea 3.0
  • _edit_link

Implicit: presetări

$ieșire (linia)

Cum să afișați rezultatul. Există 2 opțiuni:

  • nume - va fi returnată o serie de nume;
  • obiecte - va fi returnată o matrice de obiecte cu date de tip post.
    Implicit: „nume”
$operator (linia) Operator de comparare pentru criteriile specificate. Poate: „și” și „sau”.
Implicit: „și”

Exemple

#1 Afișează o listă de nume pentru toate tipurile de postări înregistrate

Enumeră tipurile de postări înregistrate:

$post_types = get_post_types(); /* $post_types = Array ( => post => pagina => atașament => revizuire => nav_menu_item => articol => întrebare) */ foreach($post_types as $post_type) ( echo $post_type "\n"; ) / * Ieșiri: postare atașament pagina revizuire nav_menu_item articol func */

#2 Afișează o listă de tipuri de postări care au o pagină în interfață

$post_types = get_post_types([ "publicly_queryable" =>1 ]); $post_types["page"] = "pagina"; // tipul încorporat nu este publicly_queryable unset($post_types["attachment"]); // șterge atașamentul /* Array => post => custom_type1 => custom_type2 => custom_type3 => pagina */

#3 Afișează o listă cu toate tipurile de postări publice, personalizate (create).

$args = array("public" => true, "_builtin" => false); $output = "nume"; // nume sau obiecte, numele note este implicit $operator = "și"; // "și" sau "sau" $post_types = get_post_types($args, $output, $operator); foreach ($post_types ca $post_type) ( echo "

". $post_type."

"; }

#4. De exemplu, obținerea tipului de postare după nume

Aici ieșirea este utilizată sub forma unui obiect de date (obiect). Afișăm tipul de înregistrare numit proprietate:

$post_types = get_post_types([ "nume" => "proprietate" ], "obiecte"); foreach ($post_types ca $post_type) ( echo "

Începând cu versiunea 2.9, WordPress a oferit posibilitatea de a utiliza tipuri de postări personalizate. Acum, cu versiunea 3.0, totul a devenit și mai frumos cu opțiunea de a crea panouri pentru tipurile de postări personalizate. În acest articol, vă vom arăta cum să implementați tipuri de postări personalizate pe site-ul dvs. WordPress.

Crearea unor tipuri de postări personalizate - utilizați pluginul

Începând de astăzi, versiunea 3.0 a WordPress nu are o interfață încorporată pentru crearea unor tipuri de postări personalizate. Există doar două moduri disponibile pentru a crea tipuri de postări personalizate: pluginuri sau codificarea temei într-un fișier funcții.php. În primul rând, să ne uităm la implementarea planului folosind pluginuri.

Interfața de utilizare a tipului de postare personalizat

Custom Post Type UI este un plugin dezvoltat de Brad Williams care vă permite să creați cu ușurință tipuri de postări personalizate și taxonomii. Una dintre cele mai notabile caracteristici ale acestui plugin este că generează cod pentru a crea tipuri de postări personalizate care pot fi ulterior inserate într-un fișier funcții.php subiecte, iar dezavantajul este că este imposibil să utilizați taxonomii pentru toate tipurile de postări.

În panoul Custom Post Type UI, faceți clic pe „Add New”.

  • „Post Type Name” este ceea ce WordPress va folosi pentru a interoga toate postările din acel post_type.
  • „Etichetă” este ceea ce va fi afișat în bara laterală a Consolei, similar cu meniul standard „Înregistrări”.
  • Dacă extindeți „Vizualizați opțiuni avansate”, puteți vedea mai multe setări suplimentare. Cele mai multe dintre ele sunt intuitive, cum ar fi „Public” și „Afișați interfața de utilizare”. Primul, când este comutat la True, vă va permite să afișați un meniu de tip de postare arbitrar în bara laterală, iar al doilea (Afișați UI), când este setat la True, creează o bară de meniu.
  • „Rescrie” este ceea ce va permite tipurilor de postări personalizate să utilizeze URL-uri WordPress prietenoase cu SEO (permalink-uri, CNC).
  • În „Custom Rewrite Slug” specificați orice doriți. WordPress va folosi slug-ul specificat pentru a genera permalink-uri. Deci dacă avem un domeniu exemplu.com iar slug este „filme”, apoi linkul către un tip de postare personalizat va arăta cam așa exemplu.com/movies.
  • Funcția WordPress „Query Var” vă permite să executați interogări pe noile tipuri de postări. Dacă luăm exemplul dat mai sus, atunci pentru a accesa o postare cu titlu, Primul meu post de film care este în post_type Filme, putem intra example.com/?movies=my-first-movie-post. Prin urmare, variabila de cerere arată astfel: ?posttypename

În cele din urmă, puteți selecta diferitele funcții pe care doriți să le suporte tipul dvs. personalizat de postare, cum ar fi miniaturile și citatele.

Crearea unor tipuri de postări personalizate - utilizați fișierul Functions.php

Dacă preferați să creați tipuri de postări personalizate fără pluginuri, pur și simplu adăugați următorul cod în fișierul functions.php al temei:

// Creați un tip de postare Filme register_post_type("movies", array("label" => "Filme", ​​"public" => true, "show_ui" => true, "capability_type" => "post", "hierarhical" => false, "rewrite" => array("slug" => "filme"), "query_var" => true, "supports" => array ("titlu", "editor", "fragment", "trackbacks" , „câmpuri-personalizate”, „comentarii”, „reviziuni”, „miniatură”, „autor”, „atribute-pagină”,)));

Să analizăm codul.

register_post_type($post_type, $args): Această funcție ia doi parametri, $post_type sau numele tipului de post și $args, o matrice de parametri.

eticheta: Numele dat tipului de postare, care va fi afișat în bara laterală a panoului administrativ al site-ului.

show_ui: adevărat/fals. Afișează sau ascunde interfața implicită pentru gestionarea acestui tip de înregistrare.

capability_type: Implicit: postare. Tip de înregistrare pentru a verifica capabilitățile de citire, editare și ștergere.

ierarhic: Dacă înregistrarea este ierarhică.

rescrie: adevărat/fals. Implicit: adevărat. Dacă este specificat parametrul slug, numele slug-ului este adăugat înainte de intrare.

query_var: true/false Setează o variabilă de interogare pentru un tip de postare personalizat.

suporta: Implicit: titlu și autor . Setează diverse caracteristici care vor fi acceptate de tipul de postare.

Vizitați Codexul WordPress pentru mai multe informații despre tip_post_înregistrare().

afișați tipuri de postări personalizate

Pentru a scoate înregistrări din tipul personalizat, trebuie să adăugați următorul cod la bucla. Schimbați „nume” cu numele tipului dvs. de postare. Notă: nu trebuie să adăugați tipurile de postări personalizate în fișierul index.php. Puteți crea și executa următoarea interogare în interiorul buclei.

$interogare = new WP_Query("post_type=nume");

Pentru a scoate postări din mai multe tipuri de postări, schimbați următorul cod cu codul de mai jos. Schimba filme la numele tipului dvs. personalizat.

Creați un tip de postare personalizat Articole cu categorii personalizate (Taxonomie personalizată) Categoria articole.

În cazul meu, toate înregistrările standard sunt Produse, așa că vom afișa Articole prin înregistrări personalizate.

În fișierul de funcții functions.php înregistrăm o postare personalizată de tip Articole:

Funcția wptp_create_post_type() ( $labels = array("name" => __("Articole"), "singular_name" => __("Articole"), "add_new" => __("Articol nou"), "add_new_item" => __(„Adăugați articol nou”), „edit_item” => __(„Editați articolul”), „new_item” => __(„Articol nou”), „view_item” => __(„Vedeți articolul”), "search_items" => __("Căutare articole"), "not_found" => __("Nu s-au găsit articole"), "not_found_in_trash" => __("Nu s-au găsit articole în Coșul de gunoi"), "etichete" =>). $labels, "has_archive" => true, "public" => true, "hierarchical" => false, "menu_position" => 5, "supports" => array ("titlu", "editor" , "extras", "câmpuri-personalizate", "miniatură"),); register_post_type("articole", $args ) add_action("init", "wptp_create_post_type");

Dacă doriți ca categoriile standard să fie afișate în postările personalizate, conectați-le la taxonomia Categorii:

"taxonomii" => matrice ("categorie"),

Dacă creați și taxonomii personalizate pentru postările personalizate, atunci trebuie să le legați cu taxonomiile create, dacă luăm exemplul de mai jos, acestea vor fi articole_categoria;

"taxonomii" => matrice("categoria_articole"),

Apoi, pentru tipul de postare personalizat Articole, înregistrăm taxonomiile „Categoria articol”, astfel încât diferite postări să aparțină unor categorii diferite.

Funcția wptp_register_taxonomy() ( register_taxonomy("articles_category", "articole", array("labels" => array("name" => "Categorii de articole", "singular_name" => "Categoria articol", "search_items" => " Căutați categorii de articole", "all_items" => "Toate categoriile de articole", "edit_item" => "Editați categorii de articole", "update_item" => "Actualizați categoria de articole", "add_new_item" => "Adăugați o categorie de articol nouă", "new_item_name" => "Nume nou categorie de articol", "menu_name" => "Categoria articol",), "hierarhic" => true, "sort" => true, "args" => array ("orderby" => "term_order"), "show_admin_column" => true) ) add_action ("init", "wptp_register_taxonomy");

Pentru o taxonomie personalizată, puteți schimba slug-ul cu unul mai frumos, astfel încât să nu fie articles_category , dar trebuie să vă asigurați că astfel de slug-uri nu mai există pe alte pagini sau postări, altfel vor apărea probleme:

"rewrite" => array ("slug" => "blog"),

Când schimbați slug-uri, trebuie să actualizați setările „Legături permanente” din panoul de administrare, altfel veți primi o eroare 404 în loc de pagina dorită.

Mai multe exemple pot fi găsite aici. Dar a ajutat să punem ordine în tot acest cod, pentru care îi sunt foarte recunoscător autorului.

Fișierul single.php este responsabil pentru aspectul unei postări personalizate, dar pentru a schimba aspectul unei postări personalizate, puteți crea un fișier single-(post_type).php - în cazul meu va fi single-articles.php cu propriul său conținut.

Acum trebuie să afișați postări personalizate pe pagină. În mod implicit, fișierul index.php este responsabil pentru afișarea arhivei postărilor personalizate. Dar puteți crea un fișier care va fi responsabil pentru afișarea intrărilor personalizate în taxonomia dvs.

Opțiunea 1 este cea mai corectă. Afișăm intrările în taxonomie în același mod ca într-o categorie obișnuită.

Pentru a face acest lucru, creați un fișier taxonomy-(taxonomy).php - în cazul meu va fi taxonomy-articles_category.php și în el afișăm ciclul obișnuit, ca și pentru intrările standard dintr-o categorie:

În fișierul tax-item.php afișăm datele pe care trebuie să le obținem de la fiecare postare, de exemplu, titlu, link-ul postării, miniatură și extras.

În fișierul pagination.php afișăm paginarea în acest format.

Ciclul nu este modificabil, paginarea funcționează excelent. Aceasta este cea mai bună opțiune pentru afișarea taxonomiilor personalizate.

Opțiunea 2 – dacă nu există taxonomii personalizate, atunci puteți obține pur și simplu toate postările personalizate sub forma unei arhive

Pentru a face acest lucru, în șablon creăm un fișier archive-(post_type).php - în cazul meu va fi archive-articles.php , în care, la fel ca în taxonomie, afișăm o buclă obișnuită, doar în loc de Titlul taxonomiei afișăm numele tipului de post personalizat :

Cu această opțiune, dacă nu a fost creată o pagină de arhivă pentru o postare personalizată, atunci puteți obține o listă cu toate postările personalizate folosind link-ul direct BLOG_URL?post_type=(post_type) sau în cazul meu http://site.com/ articole/ .

Opțiunea 3. Pur și simplu afișați toate intrările de articole personalizate pe o pagină cu un anumit șablon

„articole”, „posts_per_page” => -1); $buclă = new WP_Query($args); while ($bucla->have_posts()): $bucla->the_post(); get_template_part("include/articol-tax"); sfârşitul timpului; ?>

get_template_part("include/articol-tax"); – în fișierul tax-item.php afișez conținutul postării de care am nevoie pentru a afișa postările în buclă (titlu, miniatură, dată, citat etc.)

Această opțiune afișează toate Articolele de pe pagină, indiferent de taxonomii (categorii).

Și dacă trebuie să afișăm fiecare categorie separat cu propriile știri, atunci folosim prima opțiune descrisă mai sus.

Acestea fiind spuse, dacă utilizați pluginul Yoast SEO și folosiți pesmeturile acestuia:

Apoi, când selectați taxonomia „Categoria articole” în setările pluginului din „Taxonomie pentru a afișa în breadcrumbs pentru tipuri de postări”, în breadcrumb veți primi un link către categoria căreia îi aparține Știrile cu alte opțiuni de afișare a postărilor personalizate; , acest lucru nu s-a putut face.

În articolul nostru despre crearea și utilizarea tipurilor de postări personalizate, am acoperit esența tipurilor de postări native personalizate în Wordpress și am încercat, de asemenea, să începem cu crearea propriilor tipuri. Am acoperit, de asemenea, modalități de a menține modularitatea utilizând un fișier PHP separat, care ne permite să transferăm tipuri de postări de la șablon la șablon.

Astăzi vrem să vă ghidăm prin procesul de creare a unei taxonomii pentru propriile tipuri de postări, precum și crearea propriilor câmpuri și metablocuri, salvarea datelor și utilizarea lor în propriile șabloane WordPress.

Să începem!

Crearea unei taxonomii (pentru a permite sortarea după categorii)

Următorul pas în învățarea noastră este să creăm taxonomii care ne permit să sortăm tipurile de postări personalizate în categorii. În ceea ce privește eficiența, aceasta este aproximativ aceeași cu categoriile pentru postări, cu excepția faptului că le putem transforma în orice dorim cu doar câteva linii de cod.

Pentru aceasta vom folosi funcția Wordpress. După cum puteți vedea mai jos și în codex.wordpress.org, argumentele pe care le ia sunt taxonomie, urmată de tipul obiectului și în final $args. Pentru exemplul nostru, am creat 2 taxonomii – Skills and Club Level. Aplicăm taxonomii tipului de postare a sportivului și apoi setăm argumentele, inclusiv etichetele și privilegiile de suprascriere. Să aruncăm o privire la cod.

Register_taxonomy("Sport", array("atlet"), array("ierarhic" => true, "label" => "Sport", "singular_label" => "Sport", "rewrite" => true));
register_taxonomy("Nivel de club", matrice ("sportiv"), matrice("ierarhic" => true, "label" => "Nivel de club", "singular_label" => "Nivel de club", "rewrite" => true) );
Taxonomiile înregistrate arată cam așa:

Puteți da clic pe un tip de postare și veți fi redirecționat către o pagină foarte asemănătoare cu pagina categoriei unde veți avea opțiunea de a adăuga propriile taxonomii.

Ai terminat încă?

Hmm, practic, aveți deja propriul tip de postare care funcționează. Dar în acest moment nu este diferit de înregistrările obișnuite. Să ne aprofundăm în crearea de câmpuri personalizate pentru postările dvs. care vă vor permite să specificați informații unice și apoi să le afișați în șabloane.

Creați-vă propriile câmpuri

Pentru a începe să faci adevărată magie cu tipurile de postări personalizate, mai întâi va trebui să inițializați o funcție pentru a putea adăuga metablocuri. Îl vom apela pe al nostru admin_init() și va arăta astfel:

Add_action("admin_init", "admin_init");

funcția admin_init())(
add_meta_box ("personal_info", "Personal Info", "personal_info", "atlet", "normal", "low");
}
Prima parte a codului nostru inițializează funcția admin_init(). Este clar că a doua parte a acestui cod reprezintă funcția în sine. Practic, acest cod îi spune șablonului să creeze un nou metabloc numit „Informații personale”, să-l pună în tipul de postare pentru sportiv și apoi să îi acorde o prioritate scăzută (locație în tipul de postare).

Rece! Ei bine, am terminat acum?

Nu încă. Dar este deja foarte aproape! Să mai adăugăm câteva câmpuri personalizate. Acest lucru se aplică mai mult HTML decât PHP.

Crearea câmpurilor în propriile metablocuri

Și acum începe distracția. Vom crea un metabloc cu date personale (am făcut deja mai sus, dar acum îl vom completa) care va cere numele și prenumele persoanei, sexul, adresa de e-mail, numărul de telefon și data persoanei. de naştere.

Pentru a face acest lucru, creăm o funcție numită personal_info(). Aceeași funcție pe care am apelat-o în funcția admin_init(). Acum, să aprindem lumina? Toate liniile converg.

Creează un nou tip de înregistrare sau modifică unul existent.

Începând cu versiunea 4.6, a fost creată o nouă clasă WP_Post_Type și tot codul de funcție este acum procesat de această clasă, iar această funcție a devenit un wrapper pentru ea.

Taxonomii

Dacă o taxonomie este înregistrată pentru un nou tip de post, înregistrați întotdeauna acea taxonomie atunci când înregistrați tipul de post folosind parametrul taxonomies. Dacă nu faceți acest lucru, tipul postării și taxonomiile nu vor fi recunoscute ca fiind legate atunci când sunt declanșate hook-uri precum parse_query sau pre_get_posts. Acest lucru poate duce la consecințe neașteptate și erori.

Taxonomiile trebuie înregistrate separat. Taxonomia este specificată la înregistrarea unui tip de post, dar aceasta este doar o conexiune trebuie înregistrată separat, folosind register_taxonomy() .

Important: după crearea unui nou tip de postare. Asigurați-vă că accesați pagina Setări → Legături permanente. Acest lucru este necesar pentru ca regulile CNC să fie recreate și să fie adăugate acolo regulile noului tip de înregistrare.

Retururi

Obiect WP_Post_Type (din versiunea 4.6).

Șablon pentru crearea unui nou tip de postare
add_action("init", "register_post_types"); funcția register_post_types())( register_post_type("post_type_name", array("label" => null, "labels" => array("name" => "____", // numele principal pentru tipul de post "singular_name" => "____", // titlul unei intrări de acest tip "add_new" => "Adăugați ____", // pentru a adăuga o nouă intrare "add_new_item" => "Adăugarea ____", // titlul intrării nou create în panoul de administrare "edit_item " => "Editare ____", // pentru a edita o postare tip "new_item" => "Nou ____", // textul unei noi postări "view_item" => "Vizualizare ____", / / pentru a vizualiza o postare de acest tip "search_items" => "Căutare ____", // pentru a căuta aceste tipuri de înregistrări "not_found" => "Nu a fost găsit", // dacă nu a fost găsit nimic ca rezultat al căutării ". not_found_in_trash" => "Nu a fost găsit în coșul de gunoi", // dacă nu a fost găsit în coș "parent_item_colon" => "", // pentru părinți (pentru tipuri de arbori) "menu_name" => "____", // meniu name), "description" => "", "public" => true, // "publicly_queryable" => null, // depinde de public // "exclude_from_search" => null, // depinde de public // "show_ui " => null, // depinde de public // "show_in_nav_menus" => null, // depinde de public "show_in_menu" => null, // dacă se afișează meniul de administrare în meniu // "show_in_admin_bar" => null , // depinde de show_in_menu "show_in_rest" => null, // se adaugă la API-ul REST. C WP 4.7 "rest_base" => nul, // $post_type. C WP 4.7 "menu_position" => null, "menu_icon" => null, //"capability_type" => "post", //"capabilities" => "post", // o serie de drepturi suplimentare pentru acest tip de postare // "map_meta_cap" => null, // Setați true pentru a activa handler-ul implicit de drepturi speciale "ierarhic" => false, "supports" => [ "titlu", "editor" ], // "titlu","editor "," autor","miniatură","extras","trackback-uri","câmpuri-personalizate","comentarii","reviziuni","atribute-paginii","post-formate" "taxonomii" => , " are_archive" => false, "rewrite" => true, "query_var" => true,)); )

Utilizare

register_post_type($post_tip, $args); $post_type

(șir) (obligatoriu)

Titluri rezervate pentru tipurile de postări. Nu puteți folosi următoarele nume pentru tipurile de postări noi, deoarece acestea sunt utilizate de WordPress și codul dvs. va intra în conflict cu codul sau funcționalitatea actuală a WordPress:

Postați revizuirea atașamentului paginii nav_menu_item custom_css customize_changeset acțiune autor tema comanda $args $args Gamă de argumente.
Implicit: array() (parametri impliciti)

$args Argumente ale parametrilor

eticheta (linia) Numele unui tip de înregistrare marcat pentru traducere în altă limbă.
Implicit: $post_type etichete $args

Pentru șirurile nesetate (adică implicit), vor fi utilizate următoarele:

  • Pentru tipurile de postări care nu sunt arbore - numele de „postări”.
  • Pentru tipurile de postări arborescente - numele „paginilor permanente”.

Următoarele argumente pot fi specificate în matrice:

"name" => "", // numele principal pentru tipul de postare, de obicei la plural. "singular_name" => "", // nume pentru o înregistrare de acest tip. „add_new” => „”, // text pentru adăugarea unei noi intrări, cum ar fi „add new” pentru postările din panoul de administrare. Cu WP 5.0.

Pentru o listă completă de valori, consultați get_post_type_labels()

Implicit: dacă nu este setat, nume și nume_singular vor lua valoarea argumentului etichetă

Descriere (linia) O scurtă descriere a acestui tip de postare. Valoarea este utilizată în API-ul REST. Valoarea poate fi obținută folosind funcția get_the_post_type_description().
Implicit: "" public (logic)

Stabilește dacă tipul de postare este public sau nu. Multe altele sunt construite pe baza acestui parametru, adică. Acesta este un fel de preinstalare pentru următorii parametri:

    • show_ui = false - nu afișați interfața cu utilizatorul (UI) pentru acest tip de postare
    • publicly_queryable = false - interogările legate de acest tip de postare nu vor funcționa în șablon
    • exclude_from_search = true - acest tip de postări nu vor fi luate în considerare la căutarea pe site
    • show_in_nav_menus = false - acest tip de postări vor fi ascunse din selecția meniului de navigare
  • adevărat
    • show_ui = adevărat
    • publicly_queryable = adevărat
    • exclude_from_search = false
    • show_in_nav_menus = adevărat
  • titlu - cartuș;
  • editor - bloc pentru introducerea conținutului;
  • autor - bloc de selecție autor;
  • bloc de miniaturi pentru selectarea unei miniaturi post. De asemenea, trebuie să activați suportul pentru instalarea temei post-miniaturi;
  • fragment - bloc de intrare a cotației;
  • trackback-uri - permite suportul pentru trackback-uri și ping-uri (nu este responsabil pentru blocuri);
  • custom-fields - bloc pentru setarea câmpurilor personalizate;
  • comentarii - bloc de comentarii (discuție);
  • revizii - bloc de revizii (nu este afișat până când nu există revizuiri);
  • page-attributes - bloc de atribute ale paginilor permanente (șablon și relație arborescentă a înregistrărilor, structura arborescentă trebuie să fie activată).
  • post-formate – bloc de formate de postare, dacă sunt activate în temă.

Implicit: array("titlu","editor")

Register_meta_box_cb (linia) functie de callback care va fi declansata la setarea metablocurilor pentru pagina de creare/editare a acestui tip de postare. Utilizați remove_meta_box() și add_meta_box() în funcțiile de apel invers.
Implicit: nu taxonomii $args

O serie de taxonomii înregistrate care vor fi asociate cu acest tip de postare, de exemplu: categorie sau post_tag .

Puteți asocia taxonomii cu o postare mai târziu folosind funcția register_taxonomy_for_object_type().

Taxonomiile trebuie înregistrate folosind funcția register_taxonomy().

Acest parametru ne permite să specificăm ce grup de puncte finale dorim să ne conectăm la tipul de postare pe care îl creăm (URL-ul postării). De exemplu, dacă specificăm „permalink_epmask” = EP_PAGES & EP_TAGS , atunci tipul nostru de postare va avea toate variantele suplimentare de adrese URL (puncte finale) care sunt furnizate pentru paginile permanente și etichetele.

În mod implicit, permalink_epmask = EP_PERMALINK - aceasta înseamnă că punctele finale care sunt adăugate la postările obișnuite din WordPress vor fi adăugate la adresa URL a tipului de postare creat (în regulile CNC), care sunt adăugate la postările obișnuite din WordPress: paginare, pagina de comentarii, etc.

Dacă nu doriți să adăugați niciun punct final la noul tip de înregistrare, trebuie să specificați EP_NONE . Sau invers, specificăm EP_ALL când trebuie să adăugăm toate punctele finale.

Implicit: EP_PERMALINK

Are_archive (șir/boolean)

Activați suportul pentru paginile de arhivă pentru acest tip de postare (de exemplu: adresa URL a postării arată astfel: site.ru/type/post_name, apoi adresa URL a arhivei va arăta astfel: site.ru/type.

Dacă specificați un șir, acesta va fi utilizat în CNC. De exemplu, specificăm aici typepage și obținem un link către o arhivă a unui tip de postare de acest tip: site.ru/typepage.
Fișierul de arhivă din temă va arăta ca archive-type.php . O nouă regulă CNC va fi adăugată pentru arhive dacă argumentul de rescriere este activat.
Implicit: false

Rescrie (matrice/boolean)

Dacă să folosiți CNC pentru acest tip de înregistrare. Pentru a nu folosi CNC, specificați false. Implicit: true - numele tipului de postare este folosit ca prefix în link. Puteți specifica parametri suplimentari în matrice pentru construirea unui CNC:

    melc (linia)
    Prefix în CNC (/prefix/record_label). Utilizați array("slug" => $slug) pentru a crea un prefix diferit.
    În acest parametru puteți specifica substituenți de tip %category%. Dar acestea trebuie create folosind add_rewrite_tag() și învățate WP să le înțeleagă.
    Implicit: numele tipului de postare

    cu_fata (logic)
    Trebuie să inserez un prefix comun din setările de la început? Prefixul este luat din $wp_rewite->front . De exemplu, dacă structura permalink-urilor pentru postări din setări arată ca blog/%postname% , atunci dacă false obținem: /news/post_name, iar dacă adevărat vom obține: /blog/news/post_name.
    Implicit: adevărat

    hrănește (logic)
    Dacă să adăugați o regulă CNC pentru fluxurile RSS de acest tip de intrare.
    Implicit: valoarea argumentului are_archive

  • pagini (logic)
    Ar trebui să adaug o regulă CNC pentru paginarea unei arhive de înregistrări de acest tip? Ex: /post_type/page/2 .
    Implicit: adevărat

Implicit: true (tipul de înregistrare este folosit ca prefix)

Query_var (șir/boolean)

Setează numele parametrului de interogare pentru tipul de postare creat.

Setați-l la false pentru a dezactiva posibilitatea de interogări.

  • false - dezactivează parametrul de solicitare. Postarea nu va fi disponibilă la adresa URL: /?(query_var)=(post_slug) .
  • șir - indică numele parametrului de solicitare. /?(query_var_string)=(post_slug) .

Notă: query_var nu are sens dacă publicly_queryable = false .

Notă: Acest parametru adaugă valoarea specificată (dacă nu este specificată, atunci eticheta tip post) la lista WordPress de parametri permiși, astfel încât WordPress să înțeleagă acest parametru de interogare, consultați add_rewrite_tag() . WordPress elimină orice parametri de interogare despre care nu știe.

Exemplu:
Să presupunem că setăm tipul postării cărții și am specificat șirul numelui cărții în acest parametru. Acum, dacă accesați pagina cărții prin linkul /book/harry-potter , în codul care procesează această pagină get_query_var("bookname") va returna harry-potter . Și dacă nu am specificat nimic în acest parametru (ar fi adevărat), atunci pentru a obține harry-potter ar trebui să folosim get_query_var("book") .

Implicit: true - argumentul $post_type este setat

Can_export (logic) Posibilitatea de a exporta acest tip de înregistrări.
Implicit: adevărat delete_with_user (logic)

  • true - șterge înregistrările de acest tip aparținând utilizatorului atunci când utilizatorul este șters. Dacă Coșul de reciclare este activat, intrările nu vor fi șterse, ci vor fi plasate în Coșul de reciclare.
  • false - atunci când un utilizator este șters, înregistrările sale de acest tip nu vor fi procesate în niciun fel.
  • null - intrările vor fi șterse sau mutate în coșul de gunoi dacă este setat post_type_supports(„author”). Și nu vor fi procesate dacă tipul de postare nu acceptă „autor”.
// $tax_slug = get_term_parents_list($term_id, $tax_name, array("separator" => "/", "format" => "slug", "link" => false, "inclusive" => true,));

De asemenea, este important ca la înregistrarea unui tip de postare, parametrul ierarhic să fie fals!

#3 Adăugarea taxonomiei la CNC (intrarea și taxa au același prefix)

Acest exemplu arată cum să creați o postare cu întrebări și secțiuni pentru aceasta. În acest caz, CNC va:

  • La intrare: site.ru/faq/(category)/(label-entry)
  • Teckel: site.ru/faq/(categorie)

Aici este important să înregistrați mai întâi rata, apoi tipul de înregistrare...

Add_action("init", "register_faq_post_type"); function register_faq_post_type() ( // Sectiunea intrebare - faqcat register_taxonomy("faqcat", array("faq"), array("label" => "Sectiunea de intrebari", // determinat de parametrul $labels->name "labels" => array("name" => "Secțiuni de întrebări", "singular_name" => "Secțiune de întrebări", "search_items" => "Secțiunea de întrebări de căutare", "all_items" => "Toate secțiunile de întrebări", "parent_item" = > " Generează secțiunea de întrebări", "parent_item_colon" => "Generează secțiunea de întrebări", "edit_item" => "Editează secțiunea de întrebări", "update_item" => "Actualizează secțiunea de întrebări", "add_new_item" => "Adaugă secțiunea întrebare", "new_item_name" => "Secțiune nouă de întrebări", "menu_name" => "Secțiune de întrebări", "description" => "Categorii pentru secțiunea de întrebări", // descriere taxonomie "public" => adevărat, " show_in_nav_menus " => fals, // egal cu argumentul public "show_ui" => adevărat, // egal cu argumentul public "show_tagcloud" => fals, // egal cu argumentul show_ui "ierarhic" => adevărat, "rescrie" => array(" slug"=>"faq", "hierarhical"=>false, "with_front"=>false, "feed"=>false), "show_admin_column" => true, // Dacă se permite sau nu auto -crearea unei coloane de taxonomie în tipul de înregistrare tabel asociat. (din versiunea 3.5))); is_wp_error($termeni) && !empty($termeni) && este_obiect($termeni)) $term_slug = array_pop($terms)->slug;

Note

Plugin pentru înregistrarea tipului de postare

Există un plugin convenabil care vă permite să înregistrați noi tipuri de postări (postări) și noi taxonomii: Custom Post Type UI

Redenumirea antetelor tipului de postare

Dacă tipul de postare este deja înregistrat, dar trebuie să-i denumim altceva, folosiți următorul cod.

Acest cod arată cum să redenumiți tipul standard de postare Postări în Articole:

## înlocuiți cuvântul „postări” cu „articole” //$labels = apply_filters("post_type_labels_($post_type)", $labels); add_filter("post_type_labels_post", "redenumiți_postări_etichete"); function rename_posts_labels($labels)( // nu va inlocui automat, de exemplu, inlocuit: Post = Articol, iar in test va arata astfel "Vizualizare articol" /* obiect original stdClass ("nume" => "Postări" , "singular_name" => "Intrare", "add_new" => "Adăugați nou", "add_new_item" => "Adăugați intrare", "edit_item" => "Editați intrarea", "new_item" => "Intrare nouă", "view_item" => "Vedeți înregistrarea", "search_items" => "Se caută înregistrări", "not_found" => "Nu au fost găsite înregistrări.", "not_found_in_trash" => "Nu au fost găsite înregistrări în coșul de gunoi.", "parent_item_colon " => "", "all_items" => "Toate postările", "archives" => "Postează arhive", "insert_into_item" => "Inserează în postare", "uploaded_to_this_item" => "Încărcat pentru această postare", " featured_image" => "Postează miniatura", "set_featured_image" => "Setarea miniaturii", "remove_featured_image" => "Elimină miniatura", "use_featured_image" => "Folosește ca miniatură", "filter_items_list" => "Filtrați lista de intrări ", "items_list_navigation" => "Navigarea după lista de postări", "items_list" => "Lista de postări", "menu_name" => "Postări", "name_admin_bar" => "Postare",) */ $new = array("name" => "Articole", " singular_name" => "Articol", "add_new" => "Adaugă articol", "add_new_item" => "Adaugă articol", "edit_item" => "Editează articol", "new_item" => "Articol nou", "view_item " => "Vedeți articolul", "search_items" => "Căutați articole", "not_found" => "Nu s-au găsit articole.", "not_found_in_trash" => "Nu articole au fost găsite în coșul de gunoi.", "parent_item_colon" => " ", "all_items" => "Toate articolele", "archives" => "Arhivele articolelor", "insert_into_item" => "Inserați în articol", "uploaded_to_this_item" " => "Încărcat pentru acest articol", "featured_image" => "Miniatura articolului", "filter_items_list" => "Filtrați lista de articole", "items_list_navigation" => "Navigarea prin lista de articole", "items_list" => "Lista de articole", "menu_name" => "Articole", "name_admin_bar" => "Articol", // element "adăugați");

Adepții Instagram foarte ieftini, dar de înaltă calitate sunt disponibili la https://doctorsmm.com/. Aici puteți găsi orice ofertă personalizată pentru contul dvs. Site-ul oferă o mare varietate de calitate a paginilor adăugate și modul de viteză, precum și direcționarea către publicul geografic.

Note

  • Global. Matrice. $wp_post_types Listă de tipuri de postări.

Lista modificărilor

Din versiunea 2.9.0 Introdus.
Din versiunea 3.0.0 Argumentul show_ui este acum aplicat pe noul ecran de postare.
Din versiunea 4.4.0 Argumentul show_ui este acum aplicat pe ecranul de listare a tipurilor de postare și pe ecranul de editare a postării.
Din versiunea 4.6.0 Obiectul tip post returnat este acum o instanță a lui WP_Post_Type .
Din versiunea 4.7.0 S-au introdus argumentele show_in_rest , rest_base și rest_controller_class pentru a înregistra tipul postării în API-ul REST.

Înregistrați codul tipului de poștă: wp-includes/post.php WP 5.2.3

20) ( _doing_it_wrong(__FUNCTION__, __(„Numele tipurilor de postare trebuie să aibă între 1 și 20 de caractere”), „4.2.0”); return new WP_Error(„post_type_length_invalid”, __(„Numele tipului de postare trebuie să fie între 1 și 20 de caractere în lungime.")); ) $post_type_object = new WP_Post_Type($post_type, $args);