דף הבית » טריקים וטיפים

שאילתות מורכבות בוורדפרס 3.1

אחד השינויים המרכזיים בוורדפרס 3.1 הוא כל נושא השאילתות. בפוסט זה אציג מספר שאילתות-וורדפרס ישנות ושאילתות חדשות להצגת טקסונומיה מותאמת אישית (Custom Taxonomies) ושדות מיוחדים (Custom Fields). מקווה שתלמדו טריק או שניים.

קוד וורדפרס

קוד וורדפרס

לא משנה באיזו צורה אתם מושכים את התכנים – בעזרת query_posts(), או get_posts() או WP_Query, השימוש בשאילתות המורכבות דומה.

טקסונומיה מותאמת אישית

אם בעבר יכולנו להגדיר פוסטים מתוך קטגוריה מסויימת או תגית מסויימת, באופן הבא:

$args = array(
    'cat' => 123,
    'tag' => 'games'
);
query_posts( $args );

הרי שמהיום ניתן יהיה להגדיר גם טקסונומיה מותאמת אישית בעזרת:

$args = array(
    'tax_query' => array(
        'relation' => 'OR',
        array(
            'taxonomy' => 'category',
            'field' => 'slug',
            'terms' => array('news', 'money'),
        ),
        array(
            'taxonomy' => 'channel',
            'field' => 'id',
            'terms' => array( 11, 105 ),
            'operator' => 'NOT IN',
        )
    )
);
query_posts( $args );

שדות מיוחדים

כנ"ל לגבי שדות מיוחדים, השאילתות הפכו למורכבות יותר, ואם בעבר השתמשנו בקוד:

$args = array(
    'meta_key' => 'book_price',
    'meta_value' => 20,
    'meta_compare' => '>'
);
query_posts( $args );

הרי שהיום, נוכל להגדיר שאילתה מורכבת הרבה יותר כמו:

$args = array(
    'meta_query' => array(
        array(
            'key' => 'book_price',
            'value' => array( 20, 100 )
            'type' => 'numeric',
            'compare' => 'BETWEEN',
        ),
        array(
            'key' => 'book_genre',
            'value' => 'poetry',
            'compare' => 'NOT LIKE'
        )
    )
);
query_posts( $args );

הקוד די מסביר את עצמו, אני מקווה שאין צורך בהרחבה.

הערה לגבי ביצועים: לשאילתות מורכבות לוקח יותר זמן להיטען, אומנם לא הרבה זמן אבל זה מוסיף, אז אל תשתוללו יותר מדי.

באותו נושא

מאת רמי

מייסד האתר והעורך ראשי שלו. מפתח אתרים מבוססי וורדפרס, תורם (מדי פעם) לפיתוח המערכת, פעיל בקודקס האנגלי, אחראי על אתר וורדפרס בעברית, אחראי על תרגום וורדפרס לעברית, והחל מגרסה 3.3 אחראי על שחרור גרסאות וורדפרס בעברית.

7 תגובות »

  • מאור כותב :

    יופי של דבר הפיצ'ר הזה.

    אוטו כתב על זה ונתן גם כמה הסברים ודוגמאות, מי שאין לו בעיה לקרוא באנגלית –
    http://ottopress.com/2010/wordpress-3-1-advanced-taxonomy-queries/

  • רמי כותב :

    אם אינני טועה, נעזרתי גם בפוסט שלו כשכתבתי את הפוסט הנוכחי. אם כי הוא לא הזכיר בכלל "שדות מיוחדים", ולדעתי הם עברו את השינוי המהותי יותר.

  • עובדיה משה כותב :

    מאד מעניין הנושא…
    נותן יכולת לביצוע של מגוון שאילתות רחב יותר.
    תודה רמי

  • רמי כותב :

    אכן כך, מערכת הבלוגים הפשוטה הופכת ליותר ויותר מתקדמת בכל גרסה.

  • באינטרנט בניית אתרים כותב :

    אתה בטוח ש meta_query עובד גם ב get_posts?

  • רמי כותב :

    אין סיבה שזה לא יעבוד.

  • באינטרנט בניית אתרים כותב :

    כן עובד היה לי בעיית SYNTAX תודה!

הוסף תגובה !

באפשרותך להגיב או לשלוח טראקבק מאתרך. באפשרותך גם להירשם ולקבל עדכונים באמצעות RSS.

תגיות HTML מורשות לשימוש:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>