______UPDATE_______
যদিও আমি আরও বেশি বেশি ভোট পাচ্ছি, এবং সমাধানটি কাজ করে তবে সাইবমেটার উত্তরটি আসলে উত্তর এবং ওয়ার্ডপ্রেসের উপায়। আপনার অবশ্যই এটি চেষ্টা করা উচিত
ধাপ 1
একটি উন্নত অনুসন্ধান ফর্ম তৈরি করে শুরু করুন যা দিয়ে আপনি চান যে আপনার ব্যবহারকারী ওয়েবসাইটটির সাথে যোগাযোগ করবে এবং একটি নাম দিয়ে এটি সংরক্ষণ করবে (যেমন আমি এটি হিসাবে সংরক্ষণ করেছি advanced-searchform.php
- তবে এটি সংরক্ষণ না করে searchform.php
তবে এটি ওয়ার্ডপ্রেসের ডিফল্ট অনুসন্ধান ফর্মটি প্রতিস্থাপন করবে) ):
<form method="get" id="advanced-searchform" role="search" action="<?php echo esc_url( home_url( '/' ) ); ?>">
<h3><?php _e( 'Advanced Search', 'textdomain' ); ?></h3>
<!-- PASSING THIS TO TRIGGER THE ADVANCED SEARCH RESULT PAGE FROM functions.php -->
<input type="hidden" name="search" value="advanced">
<label for="name" class=""><?php _e( 'Name: ', 'textdomain' ); ?></label><br>
<input type="text" value="" placeholder="<?php _e( 'Type the Car Name', 'textdomain' ); ?>" name="name" id="name" />
<label for="model" class=""><?php _e( 'Select a Model: ', 'textdomain' ); ?></label><br>
<select name="model" id="model">
<option value=""><?php _e( 'Select one...', 'textdomain' ); ?></option>
<option value="model1"><?php _e( 'Model 1', 'textdomain' ); ?></option>
<option value="model2"><?php _e( 'Model 1', 'textdomain' ); ?></option>
</select>
<input type="submit" id="searchsubmit" value="Search" />
</form>
তারপরে আপনার টেম্পলেটটিতে নীচের মতো ফর্মটি কল করুন:
<?php get_template_part( 'advanced', 'searchform' ); ?>
এখন আপনার অনুসন্ধান ফর্মটি প্রস্তুত, এবং আপনি এখন অনুসন্ধান ফর্মটি ব্যবহার করতে পারেন এবং ইউআরএল-এ ব্যবহারকারী ইনপুট নিতে পারেন।
ধাপ ২
আপনার কেবল যা প্রয়োজন তা হ'ল: অনুসন্ধান কোয়েরি অনুসারে ডাটাবেসটি অনুসন্ধান করুন এবং পোস্টের ধরণ এবং এর কাস্টম ক্ষেত্রগুলি অনুসন্ধান করুন । মনে রাখবেন যে আপনার অনুসন্ধান ক্যোয়ারী এখন ফর্মটি জমা দেওয়ার পরে আপনার পাওয়া URL টি। ফর্মটি জমা দেওয়ার পরে এখন ওয়ার্ডপ্রেসকে আপনার কাস্টম অনুসন্ধান ফলাফল পৃষ্ঠাটি লোড করতে বলুন। নিম্নলিখিত ফাংশনটি আপনার মধ্যে রাখুন functions.php
যাতে এটি আপনার কাস্টম অনুসন্ধান টেম্পলেটটিকে ডিফল্টের পরিবর্তে সক্ষম করে তুলবে search.php
:
<?php
function wpse_load_custom_search_template(){
if( isset($_REQUEST['search']) == 'advanced' ) {
require('advanced-search-result.php');
die();
}
}
add_action('init','wpse_load_custom_search_template');
?>
আমি ডাব্লুপিএসই থেকে কোথাও কোড এনেছি (আমি মূলটি ভুলে গিয়েছি), তবে উপরের কোডটি ব্যবহার করে বিতর্ক রয়েছে। তবে এটি আসলে কাজ করে ( অবশ্যই লম্বা বাহানা )।
@ জিএম প্রস্তাবিত অন্য উপায় চেক করুন ।
ধাপ 3
একটি নতুন ফাইল তৈরি করুন এবং এটি সংরক্ষণ করুন advanced-search-result.php
(কারণ আমরা এই নামটি ব্যবহার করেছি functions.php
) এবং এখন আপনি মুক্ত - স্পষ্টতই। ধারণাটি হ'ল:
- ইউআরএল থেকে ডেটা ধরুন,
- একটি সাধারণ ব্যবহার করুন
WP_Query()
(যদি আপনার প্রশ্নটি জটিল হয় তবে $wpdb
ক্যোয়ারীটি ব্যবহার করুন ),
- প্রশ্নগুলির মধ্যে কমান্ডগুলি পাস করুন, ডিবি থেকে ডেটা আনুন এবং
- ফলাফল দেখান [গুলি]
একটি নমুনা হতে পারে:
<?php
// Get data from URL into variables
$_name = $_GET['name'] != '' ? $_GET['name'] : '';
$_model = $_GET['model'] != '' ? $_GET['model'] : '';
// Start the Query
$v_args = array(
'post_type' => 'vehicle', // your CPT
's' => $_name, // looks into everything with the keyword from your 'name field'
'meta_query' => array(
array(
'key' => 'car_model', // assumed your meta_key is 'car_model'
'value' => $_model,
'compare' => 'LIKE', // finds models that matches 'model' from the select field
),
)
);
$vehicleSearchQuery = new WP_Query( $v_args );
// Open this line to Debug what's query WP has just run
// var_dump($vehicleSearchQuery->request);
// Show the results
if( $vehicleSearchQuery->have_posts() ) :
while( $vehicleSearchQuery->have_posts() ) : $vehicleSearchQuery->the_post();
the_title(); // Assumed your cars' names are stored as a CPT post title
endwhile;
else :
_e( 'Sorry, nothing matched your search criteria', 'textdomain' );
endif;
wp_reset_postdata();
?>
সুতরাং, এখানে আপনার চূড়ান্ত জিনিস। তবে এখনও অনেক চ্যালেঞ্জ রয়েছে:
- বিকল্প মান - একটি উন্নত অনুসন্ধান সমস্ত ক্ষেত্র বা ক্ষেত্রের যে কোনও সাথে করা যেতে পারে , সুতরাং আপনাকে নিশ্চিত করতে হবে যে অনুসন্ধানগুলি অনুসন্ধান এবং ডেটা অনুসারে সমস্ত ফলাফল নিচ্ছে।
$wpdb
জটিল অনুসন্ধানের ফলাফলের জন্য আপনি কাস্টম এসকিউএল কোয়েরি ব্যবহার করতে পারেন এবং এটি খাঁটি মাইএসকিউএল হবে - ওয়ার্ডপ্রেসের কিছুই নেই।
- স্যানিটাইজেশন এবং বৈধকরণ - পাঠ্য ক্ষেত্র এবং পাঠ্যগ্রন্থাগুলি এতটা দুর্বল যা আপনার সাইটে খারাপ অভ্যাসের কারণ হতে পারে। সুতরাং কাঁচা তথ্য পাস করা নিরাপদ হবে, ডিবি ক্যোয়ারিতে যাওয়ার আগে আপনার স্যানিটাইজ এবং বৈধকরণ করতে হবে। ( ওয়ার্ডপ্রেসের সাথে ডেটা স্যানিটাইজেশন এবং বৈধকরণ - টুটসপ্লস )
- ডিজাইনিং - আপনি
page.php
(বা search.php
) টেমপ্লেটটি চয়ন করতে পারেন এবং এর ভিত্তিতে এই পৃষ্ঠাটি তৈরি করতে পারেন।
সুতরাং, আপনি ধারণা পেয়েছেন, তবুও এটিকে এখন, অন্বেষণ এবং আবিষ্কার করার পালা উপায় । মনে রাখবেন, প্রত্যেকের উপায় আলাদা। আপনার তৈরি করুন, যাতে আমি আপনাকে অনুসরণ করতে পারি। :)