কাস্টম পোস্ট প্রকার এবং বিভাগের জন্য ওয়ার্ডপ্রেস পুনর্লিখন বিধি


9

আমি যে জায়গাটি পেরিয়েছি তার জন্য প্রচুর গুগলিংয়ের মাধ্যমে আমি এই জায়গাটি তথ্যের একটি ভাল উত্স হিসাবে পেয়েছি। আমার প্রশ্ন ওয়ার্ডপ্রেস পুনরায় লেখার নিয়মের সাথে সম্পর্কিত যা ওয়ার্ডপ্রেস ব্যবহার করে।

আমি প্রজেক্ট নামে একটি কাস্টম পোস্ট ধরণের সেট আপ করেছি এবং আমি প্রকল্পগুলির নামে একটি কাস্টম ট্যাক্সনোমি নিবন্ধিত করেছি । পুনর্লিখনের স্লাগ বিকল্পগুলি বাদ দিয়ে সবকিছু দুর্দান্ত কাজ করে কারণ এগুলি বিরোধী হিসাবে শেষ হয় - সম্ভবত পুনর্লিখনের নিয়মের কারণে।

মূলত এই কাঠামোটি আমি অর্জন করতে চাইছি:

  • example.com/work/%taxonomy%/%post_name%/ (পোস্টের জন্য)
  • example.com/work/%taxonomy%/ (নির্দিষ্ট শ্রেণীবিন্যাসের শর্তাবলী সম্পর্কিত পোস্টগুলি তালিকাভুক্ত করুন)
  • example.com/work/ (পৃষ্ঠা-ওয়ার্ক.পিএফ-এ যান যা সেই বিভাগের সাথে সম্পর্কিত সমস্ত পোস্টের তালিকাতে ট্যাক্সোনমি.পিএপি অন্তর্ভুক্ত করে)

আমার এখন অবধি কোডটি এখানে রয়েছে তবে আমার ডাব্লুপি_রউইরিট রুলগুলি লিখতে সহায়তা প্রয়োজন কারণ এটিই আমি কিছুটা স্ট্যাম্পড।

$labels = array(
    'name' => _x('Projects', 'post type general name'),
    'singular_name' => _x('Project', 'post type singular name'),
    'add_new' => _x('Add New', 'project item'),
    'add_new_item' => __('Add New Project'),
    'edit_item' => __('Edit Project'),
    'new_item' => __('New Project'),
    'view_item' => __('View Project'),
    'search_items' => __('Search Projects'),
    'not_found' =>  __('Nothing found'),
    'not_found_in_trash' => __('Nothing found in Trash'),
    'parent_item_colon' => ''
);

$args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'hierarchical' => true,
    'rewrite' => array('slug'=>'work', 'with_front'=>false),
    'show_ui' => true,
    '_builtin' => false, // It's a custom post type, not built in!
    'capability_type' => 'post',
    'query_var' => "project", // This goes to the WP_Query schema
    'menu_position' => null,
    'supports' => array('title','editor','thumbnail', 'comments', 'author', 'excerpt')
);

register_post_type('project' , $args);

// Showcase Taxonomy
register_taxonomy('projects', array('project'), array(
    'public' => true,
    'hierarchical' => true,
    'label' => 'Project Categories', 
    'singular_label' => 'Project Category',
    'query_var' => true,
    'rewrite' => array('slug'=>'work', 'with_front'=>false, 'hierarchical'=>true)
    )
);

আপনার সাহায্যের জন্য অনেক ধন্যবাদ! :-)


1
: আমি কিছু বিষয় আপনাকে শুরু করতে পাওয়া codex.wordpress.org/Class_Reference/WP_Rewrite এবং codex.wordpress.org/Rewrite_API/add_rewrite_rule এবং codex.wordpress.org/Rewrite_API/add_rewrite_tag
chrisguitarguy

ক্রিস্টোফারড্যাভিস ধন্যবাদ, আমি তাদের আরও কিছুটা সন্ধান করব এবং কীভাবে এগিয়ে যাব তা দেখতে পাব।
matt_d_rat

1
আমি মনে করি কাস্টম পোস্ট টাইপ এবং ট্যাক্সনমি পুনর্লিখন কাঠামো মিশ্রিত করে এই প্রশ্নের উত্তর দেওয়া যেতে পারে ? যদি প্রশ্নটি আপনাকে সহায়তা না করে তবে দয়া করে এটি কীভাবে আলাদা তা নির্দেশ করতে এই প্রশ্নটি সম্পাদনা করুন।
জান ফ্যাব্রি

উত্তর:


1

আশা করি এটি আপনার সমস্যার সমাধান করতে পারে

function my_custom_post_type() {
$labels = array(
    'name' => _x('Projects', 'post type general name'),
    'singular_name' => _x('Project', 'post type singular name'),
    'add_new' => _x('Add New', 'project item'),
    'add_new_item' => __('Add New Project'),
    'edit_item' => __('Edit Project'),
    'new_item' => __('New Project'),
    'view_item' => __('View Project'),
    'search_items' => __('Search Projects'),
    'not_found' =>  __('Nothing found'),
    'not_found_in_trash' => __('Nothing found in Trash'),
    'parent_item_colon' => '',
    'menu_name' => 'Projects' 
);

$args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
        'hierarchical' => false,
        'has_archive' => true,
    'rewrite' => array('slug'=>'work', 'with_front'=>false),
    'show_ui' => true,
    '_builtin' => false, // It's a custom post type, not built in!
    'capability_type' => 'post',
        'query_var' => true, // This goes to the WP_Query schema
    'menu_position' => null,
    'supports' => array('title','editor','thumbnail', 'comments', 'author', 'excerpt')
);

register_post_type( 'work' , $args );

}
function my_custom_taxonomies() {

    $labels = array(
        'name' => __( 'Taxonomy', 'taxonomy general name' ),
        'singular_name' => __( 'Taxonomy', 'taxonomy singular name' ),
        'search_items' =>  __( 'Search Taxonomy' ),
        'all_items' => __( 'All Taxonomy' ),
        'parent_item' => __( 'Parent Taxonomy' ),
        'parent_item_colon' => __( 'Parent Taxonomy:' ),
        'edit_item' => __( 'Edit Taxonomy' ), 
        'update_item' => __( 'Update Taxonomy' ),
        'add_new_item' => __( 'Add New Taxonomy' ),
        'new_item_name' => __( 'New Taxonomy Name' ),
        'menu_name' => __( 'Taxonomy' ),
    );  

    register_taxonomy( 'taxonomy', array('work'), array (
                    'labels' => $labels,
                    'hierarchical' =>false,
                    'show_ui' => true,
                    'rewrite' => array( 'slug' => 'work/taxonomy'),
                    'query_var' => true,
                    'show_in_nav_menus' => true,
                    'public' => true,
            ));
}

add_action('init', 'my_custom_post_type', 0);
add_action('init', 'my_custom_taxonomies', 10);

আপনার যা তৈরি করতে হবে তা হ'ল আর্কাইভ-ওয়ার্ক.এফপি (আপনার পোস্টের ধরণের সংরক্ষণাগার) এবং ট্যাক্সোনমি.পিএপি যা আপনার কাস্টম ট্যাক্সোনমি সংরক্ষণাগারটি দেখানোর জন্য ব্যবহার করবে।


আপনার নিজস্ব শ্রেণীবদ্ধের নামের জন্য "শ্রেণীবিন্যাস" পরিবর্তন করতে ভুলবেন না। আপনার পোস্ট_ টাইপের সমান মান ব্যবহার করবেন না। প্রথম চেষ্টা করার জন্য বিভাগ ব্যবহার করার চেষ্টা করুন। কাজ / বিভাগ, রেজিস্টার_ট্যাক্সনমি ('বিভাগ, অ্যারে (' কাজ ')), অ্যারে (......
ননসেন্সরেক্টিভিটি

1

আমারও একই সমস্যা ছিল এবং অনেক লড়াইয়ের পরে আমি এই সমাধানটি শেষ করেছিলাম।
এটি আপনার কোডে যুক্ত করুন

global $wp_rewrite;
$wp_rewrite->flush_rules(); 

function my_custom_post_type() {
    $labels = array(
        'name' => _x('Projects', 'post type general name'),
        'singular_name' => _x('Project', 'post type singular name'),
        'add_new' => _x('Add New', 'project item'),
        'add_new_item' => __('Add New Project'),
        'edit_item' => __('Edit Project'),
        'new_item' => __('New Project'),
        'view_item' => __('View Project'),
        'search_items' => __('Search Projects'),
        'not_found' =>  __('Nothing found'),
        'not_found_in_trash' => __('Nothing found in Trash'),
        'parent_item_colon' => '',
        'menu_name' => 'Projects' 
    );

    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
            'hierarchical' => false,
            'has_archive' => true,
        'rewrite' => array('slug'=>'work', 'with_front'=>false),
        'show_ui' => true,
        '_builtin' => false, // It's a custom post type, not built in!
        'capability_type' => 'post',
            'query_var' => true, // This goes to the WP_Query schema
        'menu_position' => null,
        'supports' => array('title','editor','thumbnail', 'comments', 'author', 'excerpt')
    );

    register_post_type( 'work' , $args );

    global $wp_rewrite;   
    $wp_rewrite->flush_rules();    // this should help 
}

5
p wp_rewrite-> flush_rules () প্রায়শই চালানো উচিত নয়, এটি কেবল অ্যাক্টিভেশন বা নিষ্ক্রিয়করণ হুক বা যতটা সম্ভব স্প্রিয়ালি চালানো উচিত। এটি তাই এখানে বলে: codex.wordpress.org/Rewrite_API/flush_rules : এছাড়াও প্রায় কাছাকাছি এই এক হিসাবে একই ফাংশন codex.wordpress.org/Function_Reference/flush_rewrite_rules
জ্যারেড

অন্য একটি নোটে, আমি এটি কীভাবে সম্পাদন করেছি: পেস্টবিন.com
জ্যারেড

@ জ্যারেড নির্দেশ করার জন্য ধন্যবাদ, তবে এটি যখন আমাদের থিমের সাথে সংহত করা হয় (অর্থাত্ প্লাগইনের মাধ্যমে নয়) আমি এটি সম্পাদনের কোনও উপায় বের করতে পারি না। সুপারিশ করুন.
দিপেশ কেসি 17'12

এই ক্ষেত্রে কোডটি যেতে হবে functions.php। একটি প্লাগইন এবং একটি থিমের কোড হুবহু হ'ল, কেবলমাত্র থিমের মধ্যে পার্থক্য কেবল সর্বদা থাকে functions.phpবা কোনও ফাইল এতে অন্তর্ভুক্ত থাকেfunctions.php
জারেড

2
আমি after_switch_themeহুক ব্যবহারের পরামর্শ দেব , এটি 3.3 (আইআইআরসি) এ নতুন।
ক্রিশ্চিয়ান

0

আরও বিস্তারিত ব্যাখ্যা অন্য একটি পোস্টে রয়েছে , তবে আপনাকে এখানে যোগ করতে হবে এমন বেসিক অংশগুলি এখানে:

  1. আপনি যেমন করেন তেমন আপনার ট্যাক্সোনমিগুলি এবং সিপিটি নিবন্ধন করুন। ট্যাক্সোর জন্য আপনার পুনর্লিখনের স্লাগটি "বেসনাম" এবং সিপিটির জন্য পুনর্লিখনের স্লাগটি "বেসনাম /% ট্যাক্স_নাম%" "তা নিশ্চিত করুন।

  2. ওয়ার্ডপ্রেসকে এইভাবে "% ট্যাক্সের নাম%" দিয়ে কী করবেন তা বলুন:

    function filter_post_type_link($link, $post)
    {
    if ($post->post_type != 'custom_post_type_name')
        return $link;
    
    if ($cats = get_the_terms($post->ID, 'taxonomy_name'))
    {
        $link = str_replace('%taxonomy_name%',array_pop($cats)->term_id, link); // see custom function defined below
    }
    return $link;
    }
    add_filter('post_type_link', 'filter_post_type_link', 10, 2);
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.