דף הבית » חדשות ועדכונים, טריקים וטיפים

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

9 בדצמבר 2012 | מאת רמי | 9 תגובות | תגיות: , , , ,

בוורדפרס 3.1 הוצגו שאילתות מורכבות במחלקת WP_Query. הסטנדרט החדש (והמוצלח) אומץ במהרה על ידי הקהילה. בוורדפרס 3.5 גם מחלקת המשתמשים WP_User_Query וגם מחלקת התגובות WP_Comment_Query עודכנו כך שהן יתמכו בשאילתות מטא באותו האופן.

קוד וורדפרס

קוד וורדפרס

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

שאילתות מורכבות במחלקת WP_Query

שימוש ב-WP_Query על מנת לסנן פוסטים על פי שדות מיוחדים:

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

שאילתות מורכבות במחלקת WP_User_Query

החל מוורדפרס 3.5, ניתן להשתמש במחלקת המשתמשים WP_User_Query כדי לסנן משתמשים באותה הצורה:

$args = array(
    'meta_query' => array(
        'relation' => 'AND',
        array(
            'key' => 'country',
            'value' => 'Israel'
            'compare' => '='
        ),
        array(
            'key' => 'age',
            'value' => array( 20, 30 ),
            'type' => 'numeric',
            'compare' => 'BETWEEN'
        )
    )
);
$user_query = new WP_User_Query( $args );

// User Loop
if ( !empty( $user_query->results ) ) {
    foreach ( $user_query->results as $user ) {
        echo '<p>User: ' . $user->data->display_name . '</p>';
    }
}

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

שאילתות מורכבות במחלקת WP_Comment_Query

כנ"ל לגבי שימוש בשדות מיוחדים במחלקת התגובות WP_Comment_Query:

$args = array(
    'meta_query' => array(
        'relation'  => 'OR',
        array(
            'key'   => 'your_meta_key',
            'value' => 'meta_value'
        ),
        array(
            'key'   => 'second_key',
            'value' => 'value_2'
        )
    )
);
$comments_query = new WP_Comment_Query;
$comments = $comments_query->query( $args );
 
if( $comments ) :
    foreach( $comments as $comment ) :
        // do stuff with comments here
    endforeach;
endif;

מאת רמי

אחראי על אתר וורדפרס בעברית ועל תרגום ושחרור גרסאות וורדפרס בעברית. מפתח ליבה, בכל גרסה החל מגרסה 2.8, מפתח מוביל בגרסה 4.4 ובגרסה 4.6. מספק שירותי פיתוח אתרים, פיתוח תוספי וורדפרס לסטרטאפים ופיתוח כלים למפתחי וורדפרס - GenerateWP.com.

9 תגובות »

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

    תודה רבה…

  • רמי כותב :

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

    http://codex.wordpress.org/Class_Reference/WP_User_Query

  • חולי כותב :

    מעולה תודה,
    דוגמאות עוזרות לי מאוד להבין… וכל המרבה…

  • רמי כותב :

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

  • עומר כותב :

    אני מחכה ליום שוורדפרס יפתחו את האפשרות למנוע חיפוש עם שני שדות.

  • רמי כותב :

    עומר, זה לא יקרה לא בטווח הקרוב… אבל יש הרבה תוספים שמשפרים את החיפוש. אני כתבתי כמה פוסטים בנושא חיפוש, אולי יעזור לך.

  • omer כותב :

    Which KW should I use to search in your blog?

  • רמי כותב :

    מילת מפתח "חיפוש". משם תנווט לעמוד 2 ועמוד 3, יש כמה פוסטים שאולי יעניינו אותך.

  • מאור חזן כותב :

    שיגעון. חייב לציין שגם אני רכשתיהמון ידע בזכות תרומה לקודקס. עבודה יפה מאוד עשית שם רמי!

הוסף תגובה !

נא לא לשאול שאלות שלא קשורות לפוסט, זהו לא פורום תמיכה. לבעיות אישיות ונושאים מורכבים אפשר ליצור איתי קשר.

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