প্রথমত যদি আপনি কেবলমাত্র কাস্টম পোস্ট টাইপ করে করশক্তি মেটাবক্সটি দেখাতে চান তবে রেজিস্টার_ট্যাক্সোনমিতে যুক্তি হিসাবে কাস্টম পোস্ট প্রকারের নামটি পাস করে কেবল সেই কাস্টম পোস্ট টাইপটিতে বিভাগটি নিবন্ধন করুন। এটি করার মাধ্যমে বিভাগের মেটাবক্স কেবলমাত্র কাস্টম পোস্ট টাইপের ক্ষেত্রে উপস্থিত হয়। আপনি যদি কাস্টম পোস্টের ধরণে বিভাগের মেটাবক্সটি দেখাতে না চান তবে কাস্টম পোস্টের প্রবন্ধটি রেজিস্ট্রেশন করার সময় আর্গুমেন্ট হিসাবে শব্দটি সরিয়ে ফেলুন এবং পরিবর্তে এই 'ট্যাক্সনোমিজ' => অ্যারে ('পোস্ট_ট্যাগ', 'আপনার_ট্যাক্সনোমি_নাম') এর মতো ট্যাক্সোনমি স্লাগ নাম অন্তর্ভুক্ত করুন) । আমি কোডটি কীভাবে অর্জন করেছি তা এখানে। আমি কাস্টম পোস্ট ধরণের থিমের অধীনে স্লাগ থিম_ক্যাটরিজগুলি সহ একটি কাস্টম ট্যাক্সনমি নিবন্ধভুক্ত করেছি
function themes_taxonomy() {
register_taxonomy(
'themes_categories', //The name of the taxonomy. Name should be in slug form (must not contain capital letters or spaces).
'themes', //post type name
array(
'hierarchical' => true,
'label' => 'Themes store', //Display name
'query_var' => true,
'rewrite' => array(
'slug' => 'themes', // This controls the base slug that will display before each term
'with_front' => false // Don't display the category base before
)
)
);
}
add_action( 'init', 'themes_taxonomy');
তারপরে পার্মালিঙ্কটি পরিবর্তন করতে আমি নীচের ফাংশনটি তৈরি করেছি
function filter_post_type_link($link, $post)
{
if ($post->post_type != 'themes')
return $link;
if ($cats = get_the_terms($post->ID, 'themes_categories'))
$link = str_replace('%themes_categories%', array_pop($cats)->slug, $link);
return $link;
}
add_filter('post_type_link', 'filter_post_type_link', 10, 2);
তারপরে নীচে স্লাগ থিম সহ আমি একটি কাস্টম পোস্ট প্রকার নিবন্ধভুক্ত করেছি
//Registering Custom Post Type Themes
add_action( 'init', 'register_themepost', 20 );
function register_themepost() {
$labels = array(
'name' => _x( 'Themes', 'my_custom_post','custom' ),
'singular_name' => _x( 'Theme', 'my_custom_post', 'custom' ),
'add_new' => _x( 'Add New', 'my_custom_post', 'custom' ),
'add_new_item' => _x( 'Add New ThemePost', 'my_custom_post', 'custom' ),
'edit_item' => _x( 'Edit ThemePost', 'my_custom_post', 'custom' ),
'new_item' => _x( 'New ThemePost', 'my_custom_post', 'custom' ),
'view_item' => _x( 'View ThemePost', 'my_custom_post', 'custom' ),
'search_items' => _x( 'Search ThemePosts', 'my_custom_post', 'custom' ),
'not_found' => _x( 'No ThemePosts found', 'my_custom_post', 'custom' ),
'not_found_in_trash' => _x( 'No ThemePosts found in Trash', 'my_custom_post', 'custom' ),
'parent_item_colon' => _x( 'Parent ThemePost:', 'my_custom_post', 'custom' ),
'menu_name' => _x( 'Themes Posts', 'my_custom_post', 'custom' ),
);
$args = array(
'labels' => $labels,
'hierarchical' => false,
'description' => 'Custom Theme Posts',
'supports' => array( 'title', 'editor', 'excerpt', 'author', 'thumbnail', 'comments', 'revisions', 'post-formats', 'custom-fields' ),
'taxonomies' => array( 'post_tag','themes_categories'),
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 5,
'menu_icon' => get_stylesheet_directory_uri() . '/functions/panel/images/catchinternet-small.png',
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'query_var' => true,
'can_export' => true,
'rewrite' => array('slug' => 'themes/%themes_categories%','with_front' => FALSE),
'public' => true,
'has_archive' => 'themes',
'capability_type' => 'post'
);
register_post_type( 'themes', $args );//max 20 charachter cannot contain capital letters and spaces
}
কাস্টম পোস্ট নিবন্ধনের সময় আপনার মনে রাখতে হবে এমন কয়েকটি বিষয়। has_archive প্যারামিটারটি কাস্টম পোস্ট টাইপ স্লাগ নামে পরিবর্তন করুন এবং অন্যটি 'স্লাগ' => 'কাস্টম_পোস্ট_টাইপ_স্লাগ /% ট্যাক্সনোমি_স্লাগ% হিসাবে পুনর্লিখনের স্লাগ নাম পরিবর্তন করুন
এখন আপনি যখন রাইট পোস্টের ধরণ পৃষ্ঠায় একটি নতুন পোস্ট প্রকার যুক্ত করবেন ... আপনি http://www.example.com/wordpress/themes/%themes_categories%/post-name/ হিসাবে পারমালিঙ্কটি দেখতে পাবেন
। যদি এই পোস্টের জন্য কাস্টম বিভাগটি নির্বাচন না করা হয় তবে পারমালিংকটি http://www.example.com/wordpress/themes/%themes_categories%/post-name/ থেকে যাবে যা তারপরে একটি খারাপ অনুরোধ প্রদর্শন করবে। এটি সংশোধন করার জন্য আমরা কাস্টম বিভাগে একটি ডিফল্ট শব্দ তৈরি করি। (বিভাগগুলিতে শ্রেণিবদ্ধ হিসাবে একই) এটি ফাংশন.এফপিতে যুক্ত করুন
function default_taxonomy_term( $post_id, $post ) {
if ( 'publish' === $post->post_status ) {
$defaults = array(
'themes_categories' => array( 'other'), //
);
$taxonomies = get_object_taxonomies( $post->post_type );
foreach ( (array) $taxonomies as $taxonomy ) {
$terms = wp_get_post_terms( $post_id, $taxonomy );
if ( empty( $terms ) && array_key_exists( $taxonomy, $defaults ) ) {
wp_set_object_terms( $post_id, $defaults[$taxonomy], $taxonomy );
}
}
}
}
add_action( 'save_post', 'default_taxonomy_term', 100, 2 );
এখন যখন কাস্টম শ্রেণীবদ্ধটি ফাঁকা ছেড়ে যায় তখন স্বয়ংক্রিয়ভাবে http://www.example.com/wordpress/themes/other/post-name/ হয়ে যায় la
শেষ পর্যন্ত অ্যাডমিন বিভাগে পারমলিংক সেটিং পরিবর্তনগুলি সংরক্ষণ করে ক্লিক করে পুনর্লিখনটি ফ্লাশ করতে ভুলবেন না অন্যথায় আপনাকে 404 ত্রুটিতে পুনর্নির্দেশ করা হবে। আশা করি এটি আপনাকে সহায়তা করবে।