পারমলিংকস: কাস্টম পোস্টের ধরণ -> কাস্টম ট্যাক্সনমি -> পোস্ট


39

ওয়ার্ডপ্রেস পুনর্লিখনের নিয়মগুলি নিয়ে কাজ করতে আমার সমস্যা হচ্ছে, এবং কিছু সহায়তা ব্যবহার করতে পারি।

আমার কাছে কাস্টম পোস্ট টাইপ রয়েছে _shows_

সমস্ত শোতে একটি একক কাস্টম ট্যাক্সনোমী বিভাগ রয়েছে _show-category_.এ এর মধ্যে _show_একের বেশি কখনও হবে না _show-category_

আমি এইভাবে আমার ইউআরএলগুলি যেতে চাই:

www.mysite.com/shows/  =>  archive-shows.php

www.mysite.com/shows/%category%/ => taxonomy-show-category.php

www.mysite.com/shows/%category%/%postname%/ => single-shows.php

সুতরাং আসল বিশ্বের উদাহরণ হিসাবে, আমাদের বলি যে আমাদের কাছে একটি _show-category_"ফু" আছে এবং _show_"বার" শিরোনামে একটি পোস্ট রয়েছে যার "ফু" রয়েছে _show-category_। আমি আমার ওয়ার্ডপ্রেস অ্যাপ্লিকেশনটি দেখতে এমনটি আশা করব:

www.mysite.com/shows/foo/ => shows all posts under the foo category
www.mysite.com/shows/foo/bar => shows the indivual post

আমি যখন সম্ভব প্লাগিনগুলি এড়াতে চেষ্টা করি তবে কোনও সমাধানের জন্য উন্মুক্ত।


1
আমি আপনাকে আগে যা কিছু করতে চেয়েছিলাম তা কেবল
আপনাকেই

উত্তর:


70

প্রথমত, আপনার বর্গীকরণ সূত্র রেজিস্টার করো এবং সেট slugআর্গুমেন্ট rewriteথেকে shows:

register_taxonomy(
    'show_category',
    'show',
    array(
        'rewrite' => array( 'slug' => 'shows', 'with_front' => false ),
        // your other args...
    )
);

এর পরে, আপনার পোস্টের ধরণটি নিবন্ধ করুন এবং এতে স্লাগ সেট করুন shows/%show_category%, এবং এতে has_archiveযুক্তি সেট করুন shows:

register_post_type(
    'show',
    array(
        'rewrite' => array( 'slug' => 'shows/%show_category%', 'with_front' => false ),
        'has_archive' => 'shows',
        // your other args...
    )
);

সর্বশেষে, post_type_linkপৃথক শো পারমানিক্সগুলিতে শো বিভাগের বিকল্প করতে একটি ফিল্টার যুক্ত করুন :

function wpa_show_permalinks( $post_link, $post ){
    if ( is_object( $post ) && $post->post_type == 'show' ){
        $terms = wp_get_object_terms( $post->ID, 'show_category' );
        if( $terms ){
            return str_replace( '%show_category%' , $terms[0]->slug , $post_link );
        }
    }
    return $post_link;
}
add_filter( 'post_type_link', 'wpa_show_permalinks', 1, 2 );

সম্পাদনা

উপরের has_archiveযুক্তি ভুলে গেছেন, এটিতে register_post_typeসেট করা উচিত shows


1
মিলো, আপনাকে ধন্যবাদ! পোস্ট_ টাইপ_লিঙ্ক ফিল্টারটি আমার জন্য অনুপস্থিত অংশ ছিল। এই থ্রেডটি একই সমস্যা সহ যে কেউ পড়ছেন, কেবলমাত্র দ্রষ্টব্য হ'ল ডাব্লুপিএ_শো_মর্মালিংকস ফাংশনে একটি ছোট্ট ভুল রয়েছে, যেখানে $ post-> পোস্ট_ টাইপ == 'শো' আসলে 'শো' হওয়া উচিত। ধন্যবাদ আবার মিলো!
পল টি

4
আপনি যদি কোনও বিদ্যমান ওয়ার্ডপ্রেস উদাহরণে পরিবর্তন করছেন, আপনি সেটিংস> পারমলিক্সে যান এবং সংরক্ষণে ক্লিক করুন তা নিশ্চিত করুন। ফাংশন.এফপিতে আপনি যে পরিবর্তনগুলি করেছেন তা কার্যকর না হওয়া পর্যন্ত কার্যকর হবে না।
জে নীলি

2
এটি প্রায় আমার জন্য কাজ করেছিল যে পোস্ট বিভাগের পৃষ্ঠার উপর বিভাগের প্রদর্শনটি দেখা যায়, / post_type / শ্রমশক্তি / একটি বৈধ পৃষ্ঠা (পূর্বে 404) তবে আমার / পোস্ট_ টাইপ / শ্রেণিবদ্ধ / পোস্ট 404'ing। "শো_শ্রেণীর", "শো" উভয়ই উপরে শৃঙ্খলাবদ্ধকরণটি রেজিস্ট্রেশন করার সময় আমি লক্ষ্য করেছি, যদিও কেবল শো_শ্রেণীশ্রেণীটিই শ্রেণিবদ্ধ। আমি কেবল বিভাগের রেজিস্ট্রেশন করছি।
জাস্টিনাওয়ারী

4
@ মাইলো উপ-শুল্কের মতো শো / কর / সাবট্যাক্স / পোস্টের সাথে কাজ করার কোনও উপায় আছে?
বেন

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