অতিরিক্ত ক্যোয়ারী বর্ণ সহ অনুসন্ধানের ফলাফলের জন্য প্রিমটি পারমিলিংকস


10

আমি কীভাবে একটি অনুসন্ধান ইউআরএল পুনর্লিখন করতে পারি তা জানতে চাই যাতে একটি অতিরিক্ত জিজ্ঞাসা বর্ণটি সুন্দর পারমালিঙ্ক wp_redirectএবং template_redirectহুক ব্যবহার করে অন্তর্ভুক্ত থাকে ।

আমি নিস সার্চ প্লাগইন থেকে কোডটি নিয়েছি যা পরিবর্তিত করতে ভাল কাজ http://example.com?s=africaকরে http://example.com/search/africa:

add_action( 'template_redirect', 'my_rewrite' ) );

function my_rewrite() {

        if ( is_search() and false === strpos( $_SERVER['REQUEST_URI'], '/search/' ) ) {
            wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) );
            exit();
        }

    }

তবে আমি রিলেভানসি প্লাগইনের সাথে একত্রে একটি নির্বাচিত ড্রপডাউন ব্যবহার করছি যাতে দর্শকদের নির্দিষ্ট পোস্টের ধরণের অনুসন্ধান সংকুচিত করতে দেয়। এটি একটি post_typeক্যোয়ারী বর্ণ যুক্ত করে, যেমন http://example.com?s=africa&post_type=features। আমি এটির মতো একটি ইউআরএল চাই http://example.com/search/africa/section/features

নিস সন্ধান কোড পোস্ট-টাইপ ক্যোয়ারী ভেরি হারিয়ে যাওয়ার কারণ। সুতরাং আমি নিম্নলিখিত কোড চেষ্টা করেছিলাম:

function my_rewrite() {

    if ( is_search() and false === strpos( $_SERVER['REQUEST_URI'], '/search/' ) ) {
        if ( isset( $_GET['post_type'] ) and '' !== $_GET['post_type'] ) {
            wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) . '/section/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 'post_type' ) ) ) );
        } else {
            wp_redirect( get_bloginfo( 'home' ) . '/search/' . str_replace( ' ', '+', str_replace( '%20', '+', get_query_var( 's' ) ) ) );
        }
        exit();
    }

}

তবে ওয়ার্ডপ্রেস এখন অনুসন্ধান শব্দটি মনে করে africa/section/features

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

ধন্যবাদ সাইমন

উত্তর:


7

অনুসন্ধানের পুনর্লিখনের নিয়মগুলি সংশোধন করতে আপনি search_rewrite_rulesফিল্টারটিতে ঝুঁকতে পারেন । আপনি পোস্টের সাথে নিজেকে মেলে এমন অতিরিক্ত পুনর্লিখনের নিয়ম যুক্ত করতে পারেন বা পোস্টের ধরণটি অন্তর্ভুক্ত করতে আপনি ডিফল্ট "অনুসন্ধান পুনর্লিখনের কাঠামো" পরিবর্তন করতে পারেন এবং তারপরে নিয়মগুলি পুনরায় তৈরি করতে পারেন (এখানে চারটি বিধি রয়েছে: একটি মান, পেজিং সহ একটি) এবং দুটি ফিডের জন্য)। কারণ WP_Rewrite::generate_rewrite_rules() প্রত্যেক "ডিরেক্টরির স্তর" এ নিয়ম উত্পন্ন , আপনার জন্য নিয়ম পাবেন /search/[keyword]/section/[post_type]/, /search/[keyword]/section/এবং /search/[keyword]/। আপনার মাঝারি নিয়মের দরকার নেই তবে এটি ধরে রাখতে ক্ষতি হবে না।

add_filter( 'search_rewrite_rules', 'wpse15418_search_rewrite_rules' );
function wpse15418_search_rewrite_rules( $search_rewrite_rules )
{
    global $wp_rewrite;
    $wp_rewrite->add_rewrite_tag( '%post_type%', '([^/]+)', 'post_type=' );
    $search_structure = $wp_rewrite->get_search_permastruct();
    return $wp_rewrite->generate_rewrite_rules( $search_structure . '/section/%post_type%', EP_SEARCH );
}

নিয়মগুলি পরীক্ষা করতে, আমার পুনর্লিখন বিশ্লেষক প্লাগইনটি ব্যবহার করুন ।

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