WP_Query ilə istədiyiniz hər hansı bir yazını necə əldə edə bilərsiniz

Əvvəllər sadə mövzular qurmusunuzsa, yazılarınızı özünüz əldə etməyiniz lazım deyil. Axı, WordPress ana səhifədəki ən son 10 yazını və arxiv səhifələrində düzgün yazıları yükləyir. Daha mürəkkəb ssenarilər haqqında nə demək olar? Xəritənin növ xəritəsini istəsəniz və bütün yazılarınızı sadalamaq istəsəniz nə olar tarix tərəfindən sifariş edilmiş səhifələr?


WP_Query sizin dostunuzdur, bu, meyarlarınıza uyğun olaraq verilənlər bazasından mesajlar çıxarmağa imkan verir. Bütün yazıları müəyyən etiketləri olan bir kateqoriyadan ala bilərsiniz. Keçən il yaradılan bütün səhifələri və xüsusi görüntüsü olmayan yazıları geri ala bilərsiniz.

Bu yazıda sizə WP_Query necə işlədiyini dərindən araşdıracağam – başlasınlar!

Xüsusi bir döngə

Xüsusi sorğularla yaxşı işləməyin açarı onlara verə biləcəyiniz dəlilləri mənimsəməkdir. Buna nəzər salmazdan əvvəl tez yarataq "skelet" ismarıcları sadalamaq üçün istifadə edə bilərik. Mütəmadi bir arxiv səhifəsindəki döngə belə bir şeyə bənzəyirdi:

<?php əgər (have_posts ()): ?>
<?php isə (have_posts ()): the_post () ?>

<?php sonda ?>
<?php başqa: ?>

<?php endif ?>

Bu, sadəcə yaxşı işləyir, çünki səhifə yüklənmədən əvvəl, WordPress düzgün yazıları əldə etmişdir. Xüsusi bir sorğu yazdığımızda xüsusi bir döngə lazım olacaq. Kod çox oxşardır, bura gedir:

<?php
$ args = array (
‘post_type’ => ‘göndər’,
‘post_status’ => ‘gələcək’
);
planlaşdırılan $ = yeni WP_Query ($ args);

əgər ($ planlaşdırılır->have_posts ()):
?>
<?php isə ($ planlaşdırılır->have_posts ()): $ planlaşdırılır->Poçt() ?>

<?php sonda ?>
<?php başqa: ?>

<?php endif ?>

WP_Query sinifindən istifadə edərək yeni bir WordPress sorğusu yaradırıq, lazım olan yazıların növlərini təyin etmək üçün parametrləri ötürürük. Bundan sonra $ planlanmış obyektimizdə have_posts () və the_post () metodlarını çağırırıq.

Əgər obyekt yönümlü proqramlaşdırma ilə tanışsınızsa və niyə başa düşmədiyini bilmirsinizsə, narahat olmayın, xüsusi sorğuları asanlıqla istifadə edə bilərsiniz. Yazı boyunca olduqca sadə olacaq $ args serialına diqqət edəcəyik.

Sadə arqumentlər

Qeyd etdiyim kimi, əsas "bilik orqanı" WP_Query dedikdə onun dəlilləri dayanır. The Kodeks hamısını sadalayırıq, burada ən faydalı olanları nəzərdən keçirəcəyik.

Bəzi dəlillər etiket və ya tag_id parametri kimi olduqca sadədir. Birincisi etiket şlakını, daha sonra etiket idini götürür. Ayrıca elementləri vergül ilə ayıra bilərsiniz və ya mənfi yazıları istifadə etmək istədiyinizi göstərmək üçün istifadə edə bilərsiniz deyil bu xüsusi etiket əlavə edilmişdir.

$ args = array (
‘post_type’ => ‘göndər’,
‘tag_id’ => ’22, 92,44, -21 ‘
);
$ our_posts = yeni WP_Query ($ args);

Parça, ilk üç etiketin hər hansı birinə sahib olan, lakin dördüncüsü olmayan məqalələri geri ala bilər. Bu sistem sadə ehtiyaclar üçün kifayət qədər güclü olsa da, ümumiyyətlə bir az sonra müzakirə edəcəyim daha çevik taksonomiya sorğusundan istifadə edirəm.

Müəllif, müəllif_ adı, pişik, kateqoriya_ adı, s (axtarış şərtləri üçün), post_status, post_type daha sadə sahələrin nümunələridir. Qeyd edək ki, post_status kimi bəzi sahələr, birdən çox dəyər istifadə etmək istəsəniz, bir sıra statuslardan keçməyinizi tələb edir.

$ args = array (
‘post_type’ => array (‘yazı’, ‘səhifə’),
‘post_status’ => array (‘qaralama’, ‘dərc et’),
‘pişik’ => ‘musiqi, videolar’
);
$ our_posts = yeni WP_Query ($ args);

Yuxarıdakı nümunə hər hansı bir səhifəni, yazıları olan hər hansı bir yazını alır; ya yayımlandı, ya da qaralama vəziyyətdədir və ya musiqi və ya video kateqoriyasına aiddir. Bu, musiqi və ya video ilə əlaqəli hər hansı bir cari və ya planlaşdırılan məzmunun adlarını göstərmək üçün istifadə edilə bilər.

Taksonomiya sorğuları

Sadə iş üçün, kateqoriyalara və ya etiketlərə əsaslanan yazıları əldə etmək üçün qeyd olunan dəlillərdən istifadə etmək kifayətdir, ancaq xüsusi bir taksonomiyamız varsa və ya çox parametrləri birləşdirməlisiniz? Cavab özü bir sıra olan tax_query arqumentindədir. Əvvəlcə bir nümunəyə baxaq.

$ args = array (
‘post_type’ => ‘kitab’,
‘vergi_query’ => serial (
serial (
‘taksonomiya’ => ‘janr’,
‘alan’ => ‘şlak’,
‘şərtlər’ => serial (‘scifi’, ‘thriller’),
‘operator’ => ‘İLƏ YOX,
),
serial (
‘taksonomiya’ => ‘müəllif’,
‘alan’ => ‘id’,
‘şərtlər’ => serial (92, 883, 399),
),
‘münasibət’ => ‘VƏ’,
),
);
$ sorğu = yeni WP_Query ($ args);

Burada bəzi yazıları “kitab” yazı tipimizdən alırıq, bəzi taksonomiya parametrlərini əlavə edirik. Tax_query-də müəyyən edilmiş iki massivdən istifadə edərək müəllifin 92, 883 və ya 399 yazdığı kitabları çəkmək istədiyimizi bildirdik. deyil elmi və ya triller janrında. Münasibət parametri iki massiv arasındakı əlaqəni müəyyənləşdirir. Bizim vəziyyətimizdə ‘və’ münasibətləridir ki, hər iki şərt yerinə yetirilməlidir.

‘Və ya’ istifadə etsəydik, ya elmi, ya da triller kateqoriyasına daxil olmayan və ya göstərilən üç müəllif tərəfindən yazılmış kitabları əldə edərdik. Düz ingilis dilində bu deməkdir: Mən bütün elmi kitablarımı elmli və triller janrından başqa görmək istəyirəm. Ancaq mən janrından asılı olmayaraq Terry Pratchett, Douglas Adams və Stephen King-dən olan bütün kitabları görmək istəyirəm.

Meta sorğuları

Meta sorğuları quruluşdakı taksonomiya sorğularına çox oxşardır, ancaq yazıları süzgəcdən keçirmək üçün post meta cədvəlindəki məlumatlardan istifadə edirlər. Aşağıdakı kodda görüntülənmiş bütün yayımlanan mesajlar göstərilir.

$ args = array (
‘post_type’ => ‘göndər’,
‘meta_query’ => serial (
serial (
‘açar’ => ‘_thumbnail_id’,
‘dəyər’ => ”,
‘müqayisə et’ => ‘! =’,
),
),
);
$ sorğu = yeni WP_Query ($ args);

WordPress, _thumbnail_id sahəsini istifadə edərək bir yazı üçün təqdim olunan görüntünün şəxsiyyətini saxlayır. Beləliklə, bu meta dəyərinin boş olmadığı bütün ismarıcları geri alsaq, özellikli bir görüntü olan bütün yazıları bitirməliyik..

Burada sirr müqayisə mülkü və növündən necə istifadə edəcəyinizi bilməkdir. SQL-dən tanış olmalı olan çox sayda dəyərdən istifadə edə bilərsiniz: ‘=’, ‘! =’, ‘>’,’>= ‘,'<‘,'<= ‘,’ BUNUN ‘,’ YOXDUR ‘,’ IN ‘,’ İSTİRDİR ‘,’ İSTƏMƏZ ‘,’ İSTƏMƏZ ‘,’ mövcuddur ‘(WordPress 3.5 və yuxarı) və’ mövcud deyil ‘(WordPress 3.5-dən) və yuxarı)

Nömrələr və ya tarixləri müqayisə etmək istədikdə tip növü ümumiyyətlə vacibdir. Mümkün dəyərlər ‘NUMERIC’, ‘BINARY’, ‘CHAR’, ‘DATE’, ‘DATETIME’, ‘DECIMAL’, ‘SIGNED’, ‘TIME’, ‘UNSIGNED’. Nömrələri müqayisə edərkən NUMERIC istifadə etməyi unutmayın, əksər hallarda yaxşı olmalısınız.

Taksonomiya sorğularında olduğu kimi, bir çox tələbləri yığa və aralarındakı əlaqəni müəyyənləşdirmək üçün əlaqələr parametrindən istifadə edə bilərsiniz.

$ args = array (
‘post_type’ => ‘göndər’,
‘meta_query’ => serial (
‘münasibət’ => ‘OR’,
serial (
‘açar’ => ‘əhval’,
‘dəyər’ => serial (‘xoşbəxt’, ‘zəhmli’),
‘müqayisə et’ => ‘İN’,
),
serial (
‘açar’ => ‘gəlir’,
‘dəyər’ => 500,
‘müqayisə et’ => ‘>’,
‘növü’ => ‘NUMERIC’
),
),
);
$ sorğu = yeni WP_Query ($ args);

Yuxarıdakı nümunə yaxşı bir şeyin olduğu bir hipotetik gündəlikdən yazıları göstərə bilər. Ya xoşbəxt ya da zəhmli hiss etdim ya da həmin gün 500 dollardan çox pul qazandım.

Tarix Parametrləri

Tarixlər bir az mürəkkəb ola bilər, amma çox çevikdir. The WP_Query Sənədləşdirmə daha çox məlumata ehtiyacınız varsa çox sayda nümunə var.

Müəyyən vaxtdan yazı almaq olduqca asandır. Bir vaxtı təyin etmək üçün il, aylıq gün, w (ilin həftəsi), gün və bir neçə digər parametrlərdən istifadə edə bilərsiniz. Aşağıdakı kod 2013-cü ilin Mart ayından bütün yazıları əldə edəcəkdir.

$ args = array (
‘post_type’ => ‘göndər’,
‘il’ => 2013,
‘ay’ => 3
);
$ sorğu = yeni WP_Query ($ args);

Daha mürəkkəb vaxt aralığına girmək istəyirsinizsə, date_query istifadə etməlisiniz. Bu tanış bir sıra formatını istifadə edərək, olduqca asanlıqla ixtiyari aralıqları təyin etməyə imkan verir. Aşağıdakı nümunə – Codex-in nəzakəti – iş günləri 9AM ilə 5PM arasında yazılan yazıları necə əldə edə biləcəyinizi göstərir..

$ args = array (
‘post_type’ => ‘göndər’,
‘date_query’ => serial (
serial (
‘saat’ => 9,
‘müqayisə et’ => ‘>= ‘,
),
serial (
‘saat’ => 17,
‘müqayisə et’ => ‘<= ‘,
),
serial (
‘dayofweek’ => serial (2, 6),
‘müqayisə et’ => ‘DİQQƏT’,
),
),
);
$ sorğu = yeni WP_Query ($ args);

Sifariş Nəticələri

Bir siyahının təqdim edilmə qaydası içəridəki elementlər qədər vacibdir. Təşəkkürlə WordPress bizə sifariş_by və sifariş parametrlərini təqdim edir. Sifariş parametri olduqca sadədir, artan və ya enən sifariş vermək üçün ASC və ya DESC istifadə edə bilərsiniz.

Order_by parametri bir sıra dəyərləri qəbul edə bilər: ‘heç biri’, ‘ID’, ‘müəllif’, ‘başlıq’, ‘ad’, ‘tip’, ‘tarix’, ‘dəyişdirilmiş’, ‘valideyn’, ‘rand’ , ‘comment_count’, ‘menu_order’, ‘meta_value’, ‘meta_value_num’, ‘post__in’. Meta_value ilə sifariş vermək xüsusilə faydalı ola bilər. Bu vəziyyətdə meta_key sahəsini də qeyd etməyi unutmayın.

$ args = array (
‘post_type’ => ‘rəsm’,
‘meta_query’ => serial (
serial (
‘açar’ => ‘qiymət’,
‘dəyər’ => 50000,
‘müqayisə et’ => ‘>’,
‘növü’ => ‘NUMERIC’
),
),
‘sifariş_by’ => ‘meta_value_num’,
‘meta_key’ => ‘qiymət’
);
$ sorğu = yeni WP_Query ($ args);

Bu nümunə $ 50,000-dən çox dəyərində olan rəsm əsərlərini götürür və qiymətə görə yüksəlmələrini əmr edir. Qiymət satıldığı üçün meta_value-dan fərqli olaraq nəticələrə sifariş vermək üçün meta_value_num istifadə etdiyim bir nömrə kimi saxlanıldığını unutmayın..

Diqqətə layiq başqa bir sifariş post__in. Bu post__in özü bir parametrdir, almaq üçün yazı idlərinin bir sıra göstərməyə imkan verir. Varsayılan olaraq, WordPress ismarıcları tarixə görə sifariş edir, post__də göstərdiyiniz sifariş qorunmur. Sifarişlə post__in-i sifariş kimi istifadə etsəniz, WordPress əmri qoruyacaqdır.

$ args = array (
‘post_type’ => ‘göndər’,
‘post__in’ => serial (23, 441, 12, 322, 34, 33),
‘sifariş_by’ => ‘post__in’,
);
$ sorğu = yeni WP_Query ($ args);

Qucaqlamaq

Ümid edirəm WP_Query üçün bu girişdən aydın oldu ki, həqiqətən güclü sinifdir. WP standart bir şəkildə öz meyarlarınızdan istifadə edərək yazılarınızı əldə etməyə imkan verir. Bir nəzər yetirin sənədlər daha çox məlumat və bu sinif sorğu və döngəni manipulyasiya etmək üçün təklif etdiyi bəzi böyük xüsusiyyətlər və metodlar üçün.

WP_Query, WordPress’i mükəmməl ümumi bir CMS halına gətirən bir hissədir – modulu və özelleştirilebilir bir şəkildə verilənlər bazasından obyektləri çıxarmaq imkanı..

Hər hansı bir sualınız varsa şərhlərdə bizə bildirin!

Jeffrey Wilson Administrator
Sorry! The Author has not filled his profile.
follow me
    Like this post? Please share to your friends:
    Adblock
    detector
    map