איך לייצר שאילתת וורדפרס עם ריבוי תפקידים

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

באופן בסיסי וורדפרס מאפשרת לנו לייצר שאילתות לגבי משתמשים כך:

$users_query = new WP_User_Query(
    array(
        'role'  =>  'editor',
        'orderby' => 'registered', 
        'order' => 'ASC',
        'fields' => 'all_with_meta'
    )
);
$users = $users_query->get_results();

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

$editor_query = new WP_User_Query(
    array(
        ,'authors''role'  =>  array('editors'),
        'orderby' => 'registered', 
        'order' => 'ASC',
        'fields' => 'all_with_meta'
    )
);
$editors = $editor_query->get_results();

אבל זה לא המצב. וורדפרסס לא מאפשר העברת מערך אלא רק סטרינג.

לכן צריך לעשות מעקף קטן:

// get the featured editors
$editor_query = new WP_User_Query(
    array(
        'role'  =>  'editor',
        'orderby' => 'registered', 
        'order' => 'ASC',
        'fields' => 'all_with_meta'
    )
);
$editors = $editor_query->get_results();

// get the featured admins
$administrator_query = new WP_User_Query(
    array(
        'role'  =>  'administrator',
        'exclude' => array(),
        'orderby' => 'registered', 
        'order' => 'ASC',
        'fields' => 'all'
    )
);
$admins = $administrator_query->get_results();

// get the featured contributer
$contributors_query = new WP_User_Query(
    array(
        'role'  =>  'contributor',
        'exclude' => array(),
        'orderby' => 'registered', 
        'order' => 'ASC',
        'fields' => 'all'
    )
);
$contributors = $contributors_query->get_results();

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

$users = array_merge( $admins, $editors,$contributors,$authors );

וזהו. כל מה שנותר לנו עכשיו זה לעשות לופ למשתמשים.

כתיבת תגובה

האימייל לא יוצג באתר. שדות החובה מסומנים *