আমি কীভাবে কোনও ওয়ারপ্রেস ব্যবহারকারীর নাম প্রদর্শনের নাম বা এর কোনও অংশ অনুসন্ধান করতে পারি?


13

আমার একটি অনুসন্ধান পৃষ্ঠা তৈরি করতে হবে যা সরবরাহিত অনুসন্ধানের সাথে সম্পর্কিত যে কোনও কিছুই প্রদর্শন করবে। অর্থাত commentsএটা সম্বলিত events, posts, CPTs এবং usersএই নামের।

সাইটের প্রথম বা শেষ নামটির সন্ধানের বাক্য রয়েছে এমন ব্যবহারকারীদের আমি কীভাবে অনুসন্ধান করতে পারি?

উত্তর:


24

প্রধান সারণীটি অনুসন্ধান করা হচ্ছে

কেবল WP_User_Queryঅনুসন্ধান যুক্তি দিয়ে ব্যবহার করুন ।

সুতরাং আপনি যদি কোনও ব্যবহারকারীর জন্য উদাহরণটি সারণী user_emailথেকে তার বা অনুরূপ কলামগুলিতে কোনও কীওয়ার্ড সহ অনুসন্ধান করতে চান {$wpdb->prefix}usersতবে আপনি নিম্নলিখিতটি করতে পারেন:

$users = new WP_User_Query( array(
    'search'         => '*'.esc_attr( $your_search_string ).'*',
    'search_columns' => array(
        'user_login',
        'user_nicename',
        'user_email',
        'user_url',
    ),
) );
$users_found = $users->get_results();

*এটি একটি ওয়াইল্ডকার্ড মনে রাখবেন । উদাহরণস্বরূপ সীমাবদ্ধ তাই user_emailএকটি একক ডোমেনে আপনি নিম্নলিখিত অনুসন্ধান স্ট্রিং দিতে হবে: *@example.com

searchস্ট্রিং কিছু "জাদু" বৈশিষ্ট্য আছে: search_columnsডিফল্ট ...

  • user_emailআর্গ @উপস্থিত থাকলে search
  • user_loginএবং IDযদি searchARG সাংখ্যিক
  • user_urlযদি searchস্ট্রিং ধারণ করে http://বাhttps://
  • বা ... user_loginএবং user_nicenameযদি একটি স্ট্রিং উপস্থিত থাকে।

এই সমস্ত ডিফল্ট কেবল তখনই সেট করা থাকে যদি কোনও search_columns যুক্তি নির্দিষ্ট না করা থাকে।

মেটা টেবিলটি অনুসন্ধান করা হচ্ছে

আপনি উদাহরণস্বরূপ first_nameবা যদি অনুসন্ধান করতে চান last_name, তবে meta_queryতারা প্রধান টেবিলের অংশ না হওয়ায় আপনাকে একটি কাজ করতে হবে :

$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key'     => 'first_name',
            'value'   => $search_string,
            'compare' => 'LIKE'
        ),
        array(
            'key'     => 'last_name',
            'value'   => $search_string,
            'compare' => 'LIKE'
        )
    )
) );
$users_found = $users->get_results();

আপনি সঠিক অনুসন্ধানের স্ট্রিংটি পুনরুদ্ধার করেছেন তা নিশ্চিত করুন। সাধারণত এটি হতে পারে get_query_var('s');তবে এটি হতে পারে - আপনার ফর্মের উপর নির্ভর করে name/idকিছু আলাদা হতে পারে যা আপনি $_GET['user_search']উদাহরণস্বরূপ ব্যবহার করে পুনরুদ্ধার করতে চাইতে পারেন । এটি যথাযথভাবে এস্যাক করা নিশ্চিত করুন এবং স্ট্রিংয়ের শুরু এবং শেষ থেকে অযাচিত সাদা স্থান সরিয়ে ফেলুন।

মনে রাখবেন যে array( array() )এটি relationকী হিসাবে রয়েছে is আপনি যদি কেবল একটি একক কী অনুসন্ধান করতে চান তবে নিম্নলিখিতগুলি দিয়ে যাওয়া আরও সহজ হতে পারে:

$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
    'meta_key'     => 'first_name',
    'meta_value'   => $search_string,
    'meta_compare' => 'LIKE',
) );
$users_found = $users->get_results();

চূড়ান্ত ক্যোয়ারী

ফলাফলটি নিচের দিকে দেখতে পারে :

$search_string = esc_attr( trim( get_query_var('s') ) );
$users = new WP_User_Query( array(
    'search'         => "*{$search_string}*",
    'search_columns' => array(
        'user_login',
        'user_nicename',
        'user_email',
        'user_url',
    ),
    'meta_query' => array(
        'relation' => 'OR',
        array(
            'key'     => 'first_name',
            'value'   => $search_string,
            'compare' => 'LIKE'
        ),
        array(
            'key'     => 'last_name',
            'value'   => $search_string,
            'compare' => 'LIKE'
        )
    )
) );
$users_found = $users->get_results();

আমি কোন ফাইলটিতে এই ক্যোয়ারী যুক্ত করতে চাই?
নবীন

@ নবীন সেরা ফিটগুলি হ'ল functions.php, আপনার টেম্পলেট বা (যা সেরা হবে) থিমগুলি স্যুইচ করার সময় কাস্টম মিনি প্লাগইনটিতে সুন্দরভাবে আবৃত করা হবে।
কায়সার

কিজার আপনার জবাবের জন্য ধন্যবাদ। দয়া করে আমাকে সহায়তা করুন কীভাবে আমি এই কোডটি
নবীন

3
@ নবীন এখানে সুযোগের বাইরে। আপনাকে কোড সম্পর্কে কিছুটা শিখতে হবে বা আপনার জন্য এটি করতে একটি বিকাশকারী খুঁজে পেতে হবে। এবং যে প্রশ্ন / এ পড়ুন
কায়সার

display_nameএকটি কলাম হয় wp_users। দুটি প্রশ্ন মাথায় আসে। 1: এটি কি ডেটাবেস স্কিমে সাম্প্রতিক পরিবর্তন? 2: এটি search_columnsকী মেটা ক্যোয়ারির পরিবর্তে মান হিসাবে ব্যবহার করা যেতে পারে ?
হেনরিউইট

0

এটি কায়সারের উত্তরের পরিবর্তে আমাকে সহায়তা করেছে: https://laubsterboy.com/blog/2015/07/search-wordpress-users-by-name/

কিন্তু এই সমাধানে $wpdb->escape($usermeta_keys)ফাংশন একটি ত্রুটি উত্পন্ন, তাই আমি সহজভাবে ব্যবহার $usermeta_keys

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.