এখানে উত্তরগুলি অনুসন্ধান করে আমি মনে করি যে আরও ভাল সমাধানের জন্য আরও জায়গা রয়েছে যা আমি উপরে শিখেছি এমন কিছু জিনিসকে একত্রিত করে এবং সদৃশ পোস্ট স্লাগগুলির স্বতঃ-সনাক্তকরণ এবং প্রতিরোধ যুক্ত করে।
দ্রষ্টব্য: নিশ্চিত করুন যে আপনি নীচে আমার উদাহরণ জুড়ে নিজের নিজস্ব সিপিটি নামের জন্য 'কাস্টম_পোস্ট_প্রকার' পরিবর্তন করেছেন। অনেকগুলি ঘটনা রয়েছে, এবং 'অনুসন্ধান / প্রতিস্থাপন' হ'ল এগুলিকে ধরার একটি সহজ উপায়। এই কোডের সমস্ত আপনার ফাংশন.ফ্প বা একটি প্লাগইনে যেতে পারে।
পদক্ষেপ 1: আপনি পোস্টটি নিবন্ধিত করার সময় 'মিথ্যা' এ পুনরায় লেখক সেট করে আপনার কাস্টম পোস্টের ধরণের পুনর্লিখনগুলি অক্ষম করুন:
register_post_type( 'custom_post_type',
array(
'rewrite' => false
)
);
পদক্ষেপ 2: ম্যানুয়ালি আমাদের কাস্টম_পোস্ট_ টাইপের জন্য ওয়ার্ডপ্রেস পুনরায় লেখার নীচে আমাদের কাস্টম পুনরায় লেখাগুলি যুক্ত করুন
function custom_post_type_rewrites() {
add_rewrite_rule( '[^/]+/attachment/([^/]+)/?$', 'index.php?attachment=$matches[1]', 'bottom');
add_rewrite_rule( '[^/]+/attachment/([^/]+)/trackback/?$', 'index.php?attachment=$matches[1]&tb=1', 'bottom');
add_rewrite_rule( '[^/]+/attachment/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$', 'index.php?attachment=$matches[1]&feed=$matches[2]', 'bottom');
add_rewrite_rule( '[^/]+/attachment/([^/]+)/(feed|rdf|rss|rss2|atom)/?$', 'index.php?attachment=$matches[1]&feed=$matches[2]', 'bottom');
add_rewrite_rule( '[^/]+/attachment/([^/]+)/comment-page-([0-9]{1,})/?$', 'index.php?attachment=$matches[1]&cpage=$matches[2]', 'bottom');
add_rewrite_rule( '[^/]+/attachment/([^/]+)/embed/?$', 'index.php?attachment=$matches[1]&embed=true', 'bottom');
add_rewrite_rule( '([^/]+)/embed/?$', 'index.php?custom_post_type=$matches[1]&embed=true', 'bottom');
add_rewrite_rule( '([^/]+)/trackback/?$', 'index.php?custom_post_type=$matches[1]&tb=1', 'bottom');
add_rewrite_rule( '([^/]+)/page/?([0-9]{1,})/?$', 'index.php?custom_post_type=$matches[1]&paged=$matches[2]', 'bottom');
add_rewrite_rule( '([^/]+)/comment-page-([0-9]{1,})/?$', 'index.php?custom_post_type=$matches[1]&cpage=$matches[2]', 'bottom');
add_rewrite_rule( '([^/]+)(?:/([0-9]+))?/?$', 'index.php?custom_post_type=$matches[1]', 'bottom');
add_rewrite_rule( '[^/]+/([^/]+)/?$', 'index.php?attachment=$matches[1]', 'bottom');
add_rewrite_rule( '[^/]+/([^/]+)/trackback/?$', 'index.php?attachment=$matches[1]&tb=1', 'bottom');
add_rewrite_rule( '[^/]+/([^/]+)/feed/(feed|rdf|rss|rss2|atom)/?$', 'index.php?attachment=$matches[1]&feed=$matches[2]', 'bottom');
add_rewrite_rule( '[^/]+/([^/]+)/(feed|rdf|rss|rss2|atom)/?$', 'index.php?attachment=$matches[1]&feed=$matches[2]', 'bottom');
add_rewrite_rule( '[^/]+/([^/]+)/comment-page-([0-9]{1,})/?$', 'index.php?attachment=$matches[1]&cpage=$matches[2]', 'bottom');
add_rewrite_rule( '[^/]+/([^/]+)/embed/?$', 'index.php?attachment=$matches[1]&embed=true', 'bottom');
}
add_action( 'init', 'custom_post_type_rewrites' );
দ্রষ্টব্য: আপনার প্রয়োজনের উপর নির্ভর করে আপনি উপরের পুনর্লিখনগুলি সংশোধন করতে পারেন (ট্র্যাকব্যাকগুলি অক্ষম করবেন? ফিডস? ইত্যাদি)। এগুলি 'ডিফল্ট' টাইপের পুনরায় লেখার প্রতিনিধিত্ব করে যা উত্পন্ন হত যদি আপনি পদক্ষেপ 1 এ পুনরায় লেখাগুলি অক্ষম না করে থাকেন
পদক্ষেপ 3: আপনার কাস্টম পোস্টের ধরণের আবার 'চমত্কার' করতে পারমিলিংক তৈরি করুন
function custom_post_type_permalinks( $post_link, $post, $leavename ) {
if ( isset( $post->post_type ) && 'custom_post_type' == $post->post_type ) {
$post_link = home_url( $post->post_name );
}
return $post_link;
}
add_filter( 'post_type_link', 'custom_post_type_permalinks', 10, 3 );
দ্রষ্টব্য: আপনি যদি অন্য ব্যবহারকারীদের অন্য পোস্টের মতবিরোধী (সদৃশ) পোস্ট তৈরির বিষয়ে উদ্বিগ্ন না হন তবে আপনি এখানে থমকে যেতে পারেন যা পৃষ্ঠাটি অনুরোধ করার সময় তাদের মধ্যে কেবল একটি লোড করতে পারে।
পদক্ষেপ 4: সদৃশ পোস্ট স্লাগগুলি প্রতিরোধ করুন
function prevent_slug_duplicates( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) {
$check_post_types = array(
'post',
'page',
'custom_post_type'
);
if ( ! in_array( $post_type, $check_post_types ) ) {
return $slug;
}
if ( 'custom_post_type' == $post_type ) {
// Saving a custom_post_type post, check for duplicates in POST or PAGE post types
$post_match = get_page_by_path( $slug, 'OBJECT', 'post' );
$page_match = get_page_by_path( $slug, 'OBJECT', 'page' );
if ( $post_match || $page_match ) {
$slug .= '-duplicate';
}
} else {
// Saving a POST or PAGE, check for duplicates in custom_post_type post type
$custom_post_type_match = get_page_by_path( $slug, 'OBJECT', 'custom_post_type' );
if ( $custom_post_type_match ) {
$slug .= '-duplicate';
}
}
return $slug;
}
add_filter( 'wp_unique_post_slug', 'prevent_slug_duplicates', 10, 6 );
দ্রষ্টব্য: এটি কোনও সদৃশ স্লাগের শেষে 'ডুপ্লিকেট' স্ট্রিং যুক্ত করবে। এই কোডটি সদৃশ স্লাগগুলিকে এই সমাধানটি প্রয়োগের আগে থেকেই উপস্থিত থাকলে প্রতিরোধ করতে পারে না। প্রথমে সদৃশগুলি পরীক্ষা করার জন্য নিশ্চিত হন।
আমি অন্য কারও কাছ থেকে এটি শুনতে আগ্রহী, যিনি এটিকে যাচ্ছেন তা দেখার জন্য যদি এটি তাদের জন্যও ভালভাবে কাজ করে।