اگر میخواهید عملیات جستجوی کاربران در وردپرس یا اعضای Ultimate Member براساس یک یا چند ویژگی از آنها نظیر نام و نام خانوادگی، ایمیل و…. انجام دهید، این کار با استفاده از کوئریهای متا (Meta Query) و همچنین کوئری جستجو (Search Query) تعبیهشده در وردپرس قابل انجام است.
نکتهای که حائز اهمیت است، با استفاده از meta_query نمیتوان در بین نامهای کاربری جستجو انجام داد. چون متا کوئری عملیات جستجو را در جدول wp_user_meta انجام میدهد در حالی که نام کاربری بخشی از جدول wp_users میباشد.
نکتهی دیگر این است که با استفاده از کوئری جستجو فقط میتوان نام کاربری کاربر را جستجو نمود و در اطلاعات دیگر کاربر نظیر نام و نام خانوادگی امکان جستجو فراهم نیست.
برای رفع دو مشکل بالا، باید متا کوئری و کوئری جستجو را با هم ترکیب نمود. این کار با استفاده از ایجاد دو کوئری بر روی WP_User_Query و سپس ترکیب آن امکان پذیر خواهد بود.
آنچه در این مقاله میخوانید
جستجوی کاربران در وردپرس براساس نام کاربری
عملیات جستجوی کاربران در وردپرس براساس نام کاربری با استفاده از کوئری زیر امکان پذیر است. این کوئری، یک کوئری جستجو (Search Query) بوده که میتوانید در اندیس search_columns ستونها یا اطلاعاتی که نیاز دارید جستجو بر روی آنها انجام شود را مشخص کنید.
$wp_user_query = new WP_User_Query(
array(
'search' => "*{$str}*",
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
),
)
);
$search_query_users = $wp_user_query->get_results();
جستجوی کاربران در وردپرس براساس اطلاعات متای کاربر
عملیات جستجوی کاربران در وردپرس براساس اطلاعات متای کاربر با استفاده از کوئری زیر امکانپذیر است. این کوئری یک متا کوئری (Meta Query) نامیده میشود که میتوانید در اندیس key اطلاعات متای کاربر را مشخص کنید. به ازای هر فیلد یک آرایه نیاز است. به عنوان مثال در متا کوئری زیر، عملیات جستجو براساس نام یا نام خانوادگی کاربر انجام میشود.
$wp_user_query2 = new WP_User_Query(
array(
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $str,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $str,
'compare' => 'LIKE'
)
)
)
);
$meta_query_users = $wp_user_query2->get_results();
جستجوی کاربران در وردپرس – روش ترکیبی
همانطور که گفته شد، عملیات جستجو براساس نام کاربری و همچنین اطلاعات متای کاربر متفاوت است و برای آن که یک جستجوی کامل داشته باشید و بخواهید بر روی هر دو مدل، کاربران را جستجو کنید، باید این دو کوئری را با هم ترکیب نمایید. این کار با استفاده از کد زیر امکانپذیر است. با استفاده از تابع array_merge خروجی دو کوئری با هم ترکیب شده و سپس با استفاده از تابع array_unique کاربران تکراری حذف و یکسانسازی میشوند.
// Search by User Login & User Nicename & User Email
$wp_user_query = new WP_User_Query(
array(
'search' => "*{$str}*",
'search_columns' => array(
'user_login',
'user_nicename',
'user_email',
),
)
);
$search_query_users = $wp_user_query->get_results();
// Search by User Meta
$wp_user_query2 = new WP_User_Query(
array(
'meta_query' => array(
'relation' => 'OR',
array(
'key' => 'first_name',
'value' => $str,
'compare' => 'LIKE'
),
array(
'key' => 'last_name',
'value' => $str,
'compare' => 'LIKE'
)
)
)
);
$meta_query_users = $wp_user_query2->get_results();
$total_users_dup = array_merge($search_query_users,$meta_query_users);
$total_users = array_unique($total_users_dup, SORT_REGULAR);
کاربرد استفاده از جستجوی کاربران مناسب سایتهایی است که دایرکتوری قوی دارند و در آن نیاز است تا کاربران مختلف بتوانند به راحتی فردی را پیدا کنند. نمونه این سایتها، سایتهای پزشکی یا سایتهای چند نویسندگی میباشد. اگر نیاز به وبسایت دایرکتوری با جستجوی پیشرفته دارید، سفارش خود را از طریق طراحی سایت ثبت کنید.
منبع: Really Simple Plugins
سلام دقیقا کجا باید این کوئری ها رو تغییرداد
باسلام . وقت بخیر.
این کوئریهای برای زمانی که میخواهید برگهای در وب سایت داشته باشید و جستجوی کاربران را انجام بدید، اونجا میتونین از این کوئریها کمک بگیرین.
موفق و پیروز باشین