✅ WEB ja WordPressi uudised, teemad, pistikprogrammid. Siin jagame näpunäiteid ja parimaid veebisaidi lahendusi.

WordPressi leheküljed: lihtne utiliit (ja miks)

28

WordPressi mallide loomisel on teil üldiselt lehekülgede jagamise funktsioonid, mis pärinevad rakendusest endast.

Need hõlmavad selliseid asju nagu:

Ja on veel mõned postitused, mis annavad teile taksonoomiate üksikasjalikumat teavet, näiteks get_adjacent_post().

Soovitan lugeda kõiki ülaltoodud linke, kuna need on kasulikud, kui loote teemat, töötate kohandatud postitustüüpidega või soovite lihtsalt mõnda levinud mallimärgendit sügavamalt mõista.

Kui aga otsite lihtsat viisi oma WordPressi lehekülgede muutmise utiliidi kirjutamiseks (mille põhjust ma lühidalt selgitan), siis ülejäänud postitus hõlmab täpselt seda.

Kohandatud WordPressi leheküljed

Esiteks, kui loote kellelegi veebirakendust, on kindlasti nüansse, mille puhul WordPressi algfunktsioonid ei pruugi töötada. Võib-olla ei tööta see ootuspäraselt, ei tööta nii nagu ette nähtud või ei vasta teie vajadustele.

Igal juhul ei tähenda see, et lehekülgede arvu ei saaks teie eesmärkide täitmiseks luua. Lõppkokkuvõttes on lehekülgede jagamise tuum – eriti kui see puudutab ühe postituse lehekülgedele kirjutamist – põhiliselt järgmine:

Vaadake praegusest postitusest, kas postitus on enne seda olemas, ja vaadake, kas postitus on pärast seda. Kui kumbagi tüüpi postitus on olemas, lisage sellele link; muidu ära.

Siit saame kindlaks teha, et vajame järgmisi funktsioone.

  1. viis kindlaks teha, kas praeguse postituse taga on postitus,
  2. viis kindlaks teha, kas postitus on pärast praegust postitust olemas,
  3. viis antud postituse kättesaamiseks,
  4. viis antud postituse püsilingi hankimiseks.

Töötan siiski selle nimel, et olla ülaltoodud keeles väga täpne, sest postitusel, mis on antud postituse taga või pärast, ei pruugi olla ID-d, mis on praeguse postituse ID-st üks vähem.

See on lihtsalt esimene postitus, mis on avaldatud ja mida saab hankida mõlemas suunas, eks?

Seda silmas pidades tähendab see, et vajame kahte päringut:

  • päring praeguse postituse taga oleva postituse toomiseks,
  • päring postituse toomiseks pärast praegust postitust.

Selle näite puhul eeldan, et teil on funktsiooni get_the_ID() kaudu juurdepääs praeguse postituse ID-le .

Hankige postitus praeguse postituse taha

Selleks peame looma lihtsa päringu, mis haarab määratud postitustüübi andmebaasist ühe avaldatud postituse, mis on seotud praeguse postituse asukohaga.

Seda saame teha, kui piirame tulemuste komplekti ühega, järjestame tulemused kahanevas järjekorras ja võrdleme postituse ID väärtust:

<?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') );

See annab tulemuseks hulga tulemusi, mida näeme mõne aja pärast hallata.

Hankige postitus pärast praegust postitust

Järgmise postituse jaoks kirjutame sarnase päringu. Kuid selle asemel otsime järgmist väärtust, mis on suurem ja mis on praegusest ID-st ees:

<?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') );

Nüüd vajame mõnda funktsiooni, et teha kindlaks, kas postitused on olemas. Saame seda teha tagastatud tulemuste massiiviga.

Kontrollige, kas postitus on olemas

Pange tähele, et järgmises näites aktsepteerib funktsioon tulemuste massiivi ja lihtsalt tagastab, kui on olemas eelmine postitus. Sellesse funktsiooni edastatavad tulemused peaksid pärinema ülaltoodud eelmisest postituspäringust.

Teiseks pange tähele, et see on privaatne. Sõltuvalt sellest, kuidas soovite oma malle koostada, võite soovida oma malli avalikustada.

<?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]);
}

Järgmise postituse puhul näeb see välja sama, kuid pidage meeles, et sellesse funktsiooni edastatavad tulemused pärinevad teisest päringust.

<?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 lõpuks saame püsilingi hankimiseks kasutada neid tingimuslikke funktsioone.

Hankige link

Pidage meeles, et viis, kuidas te seda funktsiooni kasutate, võib minu pakutavast rakendusest erineda. Nii et kui te ei pea seda privaatseks, muutke selle nähtavust ja kasutage seda vastavalt vajadusele oma mallis .

<?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);
}

Lõpuks pange tähele, et see funktsioon aktsepteerib tulemusi, mille te talle mõlemast päringust edastate, ja hangib ID atribuudi tulemuste esimesest indeksist.

Selle põhjuseks on asjaolu, et tulemused on piiratud ühega ja see sõltub teie tingimuslike funktsioonide kasutamisest. See tähendab, et saate teha midagi sellist:

  • kui on järgmine postitus, siis hankige järgmise postituse link

Kuid teie rakendamine võib erineda.

Miks seda vaja on?

Seda ei pruugi vaja minna. See on kogu asi: kui kasutate WordPressi kasutusvalmis, väga väheste kohandamiste või laiendustega ja te ei pea tegema midagi peale selle, mida see pakub, siis ei pruugi te seda vajada.

Teisest küljest, kui otsite viisi WordPressi lehekülgede muutmise funktsiooni juurutamiseks ühele postitusele, siis see on viis seda teha, mis suudab korralikult käsitleda konkreetset tüüpi postitusi, kuid mitte. t omama järjestikuseid ID-sid (ja need töötavad ainult postituse avaldamise olekuga).

See veebisait kasutab teie kasutuskogemuse parandamiseks küpsiseid. Eeldame, et olete sellega rahul, kuid saate soovi korral loobuda. Nõustu Loe rohkem