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

WordPress-sivutus: yksinkertainen apuohjelma (ja miksi)

30

Kun rakennat malleja WordPressille, sinulla on yleensä sivutustoimintoja, jotka tulevat itse sovelluksesta.

Näihin kuuluvat mm.

Ja on muutamia muita viestejä, jotka antavat sinulle paremman tarkkuuden taksonomioiden suhteen, kuten get_adjacent_post().

Suosittelen lukemaan kaikki yllä olevat linkit, koska ne ovat hyödyllisiä, jos rakennat teemaa, työskentelet mukautettujen viestityyppien kanssa tai haluat vain ymmärtää joitakin yleisiä mallitunnisteita.

Jos kuitenkin etsit helppoa tapaa kirjoittaa WordPress-sivutusapuohjelma (jonka selitän perustelut hetkeksi), tämän viestin loppuosa kattaa juuri sen.

Mukautettu WordPress-sivutus

Ensinnäkin aina, kun rakennat verkkosovellusta jollekin, on varmasti vivahteita, joissa alkuperäiset WordPress-toiminnot eivät välttämättä toimi. Ehkä se ei toimi odotetulla tavalla, se ei toimi tarkoitetulla tavalla tai se ei palvele tarpeitasi.

Joka tapauksessa, se ei tarkoita, ettei sivutusta voida rakentaa palvelemaan tavoitteitasi. Loppujen lopuksi sivuttamisen ydin – varsinkin kun se liittyy yhden postin sivuttamiseen – on pohjimmiltaan tämä:

Katso nykyisestä viestistä, onko viesti olemassa ennen sitä ja onko viesti olemassa sen jälkeen. Jos jompikumpi viestityyppi on olemassa, anna linkki siihen; muuten älä.

Tästä voimme päätellä, että tarvitsemme seuraavat ominaisuudet:

  1. tapa määrittää, onko nykyisen viestin takana viesti,
  2. tapa määrittää, onko viesti olemassa nykyisen viestin jälkeen,
  3. tapa hakea tietty viesti,
  4. tapa saada pysyvä linkki kyseiseen viestiin.

Pyrin kuitenkin olemaan erittäin tarkka yllä olevan kielen suhteen, koska tietyn postauksen "takana" tai "jälkeen" olevalla viestillä ei välttämättä ole tunnusta, joka on yksi vähemmän kuin nykyisen viestin tunnus.

Se on yksinkertaisesti ensimmäinen julkaistu viesti, jonka voi hakea kumpaankin suuntaan, eikö niin?

Tämä tarkoittaa, että tarvitsemme kaksi kyselyä:

  • kysely nykyisen viestin takana olevan viestin hakemiseksi,
  • kysely, jolla haetaan viesti nykyisen viestin jälkeen.

Tässä esimerkissä oletan, että sinulla on pääsy nykyisen viestin tunnukseen get_the_ID() – funktion kautta.

Hanki postaus nykyisen viestin taakse

Tätä varten meidän on luotava yksinkertainen kysely, joka nappaa yhden julkaistun viestin määritetyn viestityypin tietokannasta ja joka liittyy nykyisen viestin sijaintiin.

Voimme tehdä tämän rajoittamalla tulosjoukon yhteen, järjestämällä tulokset laskevassa järjestyksessä ja vertaamalla viestitunnuksen arvoa:

<?php

global $wpdb;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "
        SELECT *
        FROM $wpdb->posts
        WHERE ID < (SELECT ID
            FROM $wpdb->posts
            WHERE ID = %d
            AND post_type = '%s'
            AND post_status = '%s'
            ORDER BY ID DESC) AND post_type = '%s'
        AND post_status = '%s'
        ORDER BY ID DESC
        LIMIT 1
        ",
        get_the_ID(),
        'acme-custom-post-type',
        'publish',
        'acme-custom-post-type',
        'publish') );

Tämä palauttaa joukon tuloksia, joita voimme hallita hetkessä.

Hanki viesti nykyisen viestin jälkeen

Seuraavaa viestiä varten kirjoitamme samanlaisen kyselyn. Mutta sen sijaan etsimme seuraavaa arvoa, joka on suurempi ja joka on nykyisen tunnuksen edellä:

<?php

global $wpdb;
$results = $wpdb->get_results(
    $wpdb->prepare(
        "
        SELECT *
        FROM $wpdb->posts
        WHERE ID > (SELECT ID
            FROM $wpdb->posts
            WHERE ID = %d
            AND post_type = '%s'
            AND post_status = '%s'
            ORDER BY ID ASC) AND post_type = '%s'
        AND post_status = '%s'
        ORDER BY ID ASC
        LIMIT 1
        ",
        get_the_ID(),
        'acme-custom-post-type',
        'publish',
        'acme-custom-post-type',
        'publish') );

Tarvitsemme nyt muutamia toimintoja määrittääksemme, onko viestejä olemassa. Voimme tehdä tämän palautetulla tulostaulukolla.

Tarkista, onko viestiä olemassa

Huomaa, että seuraavassa esimerkissä funktio hyväksyy tulosjoukon ja yksinkertaisesti palauttaa, jos on edellinen viesti. Tähän funktioon välitettävien tulosten tulee olla edellisestä yllä olevasta viestikyselystä.

Toiseksi, huomaa, että se on yksityinen. Haluat ehkä tehdä omasi julkiseksi riippuen siitä, miten haluat rakentaa mallisi.

<?php 
/**
 * @param array $results the results of the query to determined if there are past posts
 *
 * @return bool true if there is a previous post; otherwise, false
 */
private function hasPreviousPost($results)
{
    return isset($results[0]);
}

Ja sitten seuraavassa viestissä se näyttää samalta, mutta muista, että tähän toimintoon välitetyt tulokset ovat eri kyselystä.

<?php
/**
 * @param array $results the results of the query to determined if there are future posts
 *
 * @return bool true if there is a next post; otherwise, false
 */
private function hasNextPost($results)
{
    return isset($results[0]);
}

Ja lopuksi, voimme käyttää näitä ehdollisia toimintoja pysyvän linkin saamiseksi.

Hanki linkki

Muista, että tapa, jolla käytät tätä toimintoa, voi poiketa tarjoamastani toteutuksesta. Joten jos et tarvitse sitä yksityiseksi, muuta sen näkyvyyttä ja käytä sitä mallissasi tarpeen mukaan .

<?php
/**
 * @param array $results the results of the array from which to retrieve the post ID
 *
 * @return string the ID of the post to which we're going to link
 */
private function getPostLink($results)
{
    return get_the_permalink($results[0]->ID);
}

Huomaa lopuksi, että tämä funktio hyväksyy tulokset, jotka annat sille kummasta tahansa kyselystä, ja noutaa ID-ominaisuuden tulosten ensimmäisestä hakemistosta.

Tämä johtuu siitä, että tulokset rajoittuvat yhteen ja se perustuu ehdollisten funktioiden käyttöön. Eli voit tehdä jotain kuten:

  • jos on seuraava postaus niin hanki seuraavan postauksen linkki

Mutta toteutuksesi voi vaihdella.

Miksi tätä tarvitaan?

Sitä ei ehkä tarvita. Siinä on koko juttu: Jos käytät WordPressiä heti valmiina ja hyvin vähän mukautettuja tai laajennuksia, etkä tarvitse tehdä muuta kuin mitä se voi tarjota, et ehkä tarvitse tätä.

Jos toisaalta etsit tapaa esitellä WordPressin sivutustoiminto yhdessä viestissä, tämä on tapa tehdä se, joka pystyy käsittelemään oikein viestit, jotka ovat tietyntyyppisiä, mutta eivät t ovat peräkkäisiä tunnuksia (ja jotka toimivat vain julkaisun tilan kanssa).

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