✅ WEB- ja WordPress -uutiset, -teemat, -laajennukset. Täällä jaamme vinkkejä ja parhaita verkkosivustoratkaisuja.

Mukautettu WordPress-kategorian muokkaussivu

15

Metaruutujen, -kenttien ja muiden tietojen lisääminen WordPressiin on helppoa, jos tiedät oikeat koukut ja oikeat sovellusliittymät, joita seurata. Mutta entä jos haluat lisätä tietoja WordPressin taksonomiasivulle?

Oletetaan esimerkiksi, että haluat luoda mukautetun WordPress-luokan muokkaussivun tai ainakin lisätä mukautettuja tietoja taksonomiasivulle?

Se on edelleen mahdollista tehdä, ja se on edelleen suhteellisen helppoa, mutta jälleen kerran, sinun on tiedettävä oikeat koukut käytettäväksi, ja se riippuu myös siitä, työskenteletkö sisäänrakennettujen taksonomioiden vai mukautetun taksonomian kanssa.

Tässä viestissä näytän, kuinka tämä tehdään käyttämällä mukautettua, hierarkkista taksonomiaa (tai yksinkertaisemmin mukautettua luokkaa).

Mukautettu WordPress-kategorian muokkaussivu

Ensinnäkin, jos päätät työskennellä tavallisen luokkasivun kanssa, näet todennäköisesti jotain tällaista:

Ja kaksi koukkua, joiden kanssa sinun on työskenneltävä, ovat:

Jos olet napsauttanut jompaakumpaa linkkiä, huomaat, että jälkimmäisessä ei ole mitään tietoa, mutta edellisessä lukee:

Edit_category_form-toimintoa/koukkua voidaan käyttää lisätoimintojen suorittamiseen luokan muokkausnäytössä. Voit esimerkiksi lisätä lomakekenttiä lisätietojen tallentamiseksi tietystä luokasta.

Tätä tarkoitusta varten päätän yleensä käyttää tätä koukkua, koska se on hyvin määritelty Codexissa. Tässä viestissä olen kuitenkin huolissani vain tietojen hahmontamisesta – en lisää tallennettavia kenttiä.

Johdot asiat ylös

Yksinkertaisimmassa muodossa paras tapa lisätä mukautettuja tietoja tämän tyyppisille sivuille on luoda funktio ja liittää se yllä mainittuun koukkuun. Perusmuodossaan tämä näyttää suunnilleen tältä:

<?php

add_action('edit_category_form', 'acme_display_object_ids');
/**
 * Displays an ordered list of all of the object IDs for a given
 * taxonomy.
 */
function acme_display_object_ids()
{
  // Code for displaying the Object IDs goes here.
}

Jos kuitenkin käytät oliosuuntautunutta reittiä, voit valita luokan, joka hyväksyy koukun argumenttina konstruktorissa ja kuuntelee tapahtuman käynnistymistä. Jos näin on, koodisi voi näyttää tältä:

<?php

class ObjectIdSubscriber
{
    /**
     * @var string the hook to which this class subscribes
     */
    private $hook;

    /**
     * @param string $hook the hook to which this class is registered with WordPress
     */
    public function __construct(string $hook)
    {
      $this->hook = $hook;
    }

    /**
     * Renders all of the information for the object IDs.
     */
    public function load()
    {
        // Code for displaying the Object IDs goes here.
    }
}

Siitä huolimatta asia on, että sinulla on oltava luokka tai toiminto, joka on kytketty koukkuun, joka renderöi tiedot, kun näyttö esitetään.

Tietojen näyttäminen

Tästä eteenpäin tarvitset jotain hahmonnettavaa. Pidän logiikkani erillään pitämisestä, joten luon yleensä View -hakemiston ja sijoitan sitten näkymien osittaiset tiedostot kyseiseen hakemistoon.

Mukautettu WordPress-kategorian muokkaussivu

Tietysti voit aina rakentaa HTML-merkkijonon PHP-funktiossa (mutta varmista, että puhdistat tulosteen käyttämällä jotain, kuten wp_kses ).

Tässä esimerkissä aion pitää asian yksinkertaisena: haluan vain vetää luettelon kaikista viesteistä (tai kohteista, kuten näet hetken kuluttua) tietokannasta ja listata tiedot sivulla. Tätä varten tarvitsen muutaman tietokantakyselyn, ja sitten voin iteroida tulosluetteloa.

Ensin tarvitsen kyselyn, joka hakee termin_taxonomy_id annetusta luokasta:

<?php

// This will retrieve all of the term relationships from where we can get post IDs.
global $wpdb;
$termTaxonomyId = $wpdb->get_results(
    $wpdb->prepare(
        "
        SELECT DISTINCT term_taxonomy_id
        FROM $wpdb->term_taxonomy
        WHERE term_id = %s
        ",
        $tagId
    ),
    ARRAY_A
);
$termTaxonomyId = isset($termTaxonomyId[0])? $termTaxonomyId[0]: null;
if (null === $termTaxonomyId) {
    return null;
}

Sitten minun on noudettava luettelo kaikista objektitunnuksista, jotka liittyvät tähän term_taxonomy_id :hen :

<?php

// This will retrieve all of the post IDs.
$postIds = $wpdb->get_results(
    $wpdb->prepare(
        "
        SELECT object_id
        FROM $wpdb->term_relationships
        WHERE term_taxonomy_id = %s
        ",
        $termTaxonomyId
    ),
    ARRAY_A
);
if (empty($postIds)) {
    return null;
}

Tästä eteenpäin voin sitten käyttää aiemmin luomaani alkuperäistä funktiota (tai luokkaa) tietojen hahmontamiseen :

<ul>
<?php foreach ($postIds as $postId): ?>
  <li><?php echo $postId; ?></li>
<?php endforeach; ?>
</ul>

Mutta siellä on paljon muita asioita, joita voit tehdä sieltä.

Siellä on enemmän

Kuten huomautettiin, tämä palauttaa objektien tunnukset, jotka ovat olennaisesti viestitunnuksia (tai sivutunnuksia tai mukautettuja postaustyyppien tunnuksia tai mitä tahansa wp_posts- taulukosta).

Kun sinulla on nämä tiedot, voit hakea mitä tahansa tietoja, kuten otsikon, sisällön, metatiedot, erilaiset päivämäärätiedot ja niin edelleen.

Viestin tarkoitus ei kuitenkaan ole näyttää, mitä tietoja haetaan, vaan kuinka noutaa tiedot tietylle taksonomialle ja sitten renderöidä se mukautetulla WordPress-luokkasivulla. Ja tämä on suoraviivainen tapa tehdä juuri niin.

Tämä verkkosivusto käyttää evästeitä parantaakseen käyttökokemustasi. Oletamme, että olet kunnossa, mutta voit halutessasi kieltäytyä. Hyväksyä Lisätietoja