Loại bài đăng tùy chỉnh Thêm danh mục vào slug

Permalinks đóng một vai trò quan trọng trong cách người dùng cảm nhận trang web của bạn. Một permalink thân thiện với người dùng luôn dễ nhìn cho người dùng. Nó cũng cho người dùng biết chính xác điều gì sẽ xảy ra khi liên kết xuất hiện trong kết quả cho truy vấn của công cụ tìm kiếm. Do đó, nếu liên kết sẽ là một trong những yếu tố quyết định liệu người dùng có truy cập trang web của bạn hay không thì ‘Pretty Permalinks’ là cách tốt nhất

Một cách để tùy chỉnh liên kết cố định là chèn thuật ngữ phân loại vào liên kết cố định của bài đăng, bằng cách đặt liên kết cố định thành '%category%/%post_name%'. Tuy nhiên, điều này sẽ không hoạt động với loại bài đăng tùy chỉnh. Nó sẽ chỉ hoạt động cho các bài đăng mặc định

Chúng ta hãy lấy một ví dụ. Giả sử bạn muốn có phần 'Dự án' trên trang web của mình. Để cung cấp phần này trên trang web của bạn, bạn đã tạo 'dự án' dưới dạng loại bài đăng tùy chỉnh. Bây giờ bạn cần phân loại các dự án của mình thành một số danh mục như ‘WordPress’, ‘Drupal’, ‘Joomla’. Do đó, bạn cũng đã tạo một phân loại 'project_categories' cho các danh mục đó. Về mặt kỹ thuật, chúng tôi gọi 'WordPress', 'Drupal' và 'Joomla' là thuật ngữ phân loại tùy chỉnh 'project_categories'

Vì vậy, bây giờ nếu người dùng đang xem một dự án trong phần Dự án trên trang web của bạn, cụ thể hơn là trong phần WordPress thì URL sẽ trông như thế này

http://abc.com/projects/wordpress/your-project-name

Tạo Loại bài đăng tùy chỉnh và Phân loại tùy chỉnh

Bạn đã có khái niệm. Đúng? .
Đầu tiên, chúng ta sẽ tạo một loại bài đăng tùy chỉnh và phân loại tùy chỉnh. Điều này có thể được thực hiện bằng cách sử dụng plugin hoặc với sự trợ giúp của mã. Nếu bạn đang chọn sử dụng plugin và không biết cách thực hiện, hãy đọc phần  'Tạo loại bài đăng tùy chỉnh bằng plugin'. Tuy nhiên, nếu bạn muốn thực hiện điều này bằng mã thì hãy mở các chức năng. php và thêm mã bên dưới vào nó.

'init', 'projects_cpt');
function projects_cpt() {
    $labels = array(
        'name' => 'Projects',
        'singular_name' => 'Project',
        'add_new' => 'Add New',
        'add_new_item' => 'Add New Project',
        'edit_item' => 'Edit Project',
        'new_item' => 'New Project',
        'all_items' => 'All Projects',
        'view_item' => 'View Project',
        'search_items' => 'Search Projects',
        'not_found' => 'No projects found',
        'not_found_in_trash' => 'No projects found in Trash',
        'parent_item_colon' => '',
        'menu_name' => 'Projects'
    );
    $args = array(
        'labels' => $labels,
        'public' => true,
        'publicly_queryable' => true,
        'show_ui' => true,
        'show_in_menu' => true,
        'query_var' => true,
        'taxonomies' => array('projectstype'),
        'rewrite' => array('slug' => 'projects/%projectscategory%', 'with_front' => false), 
        //Adding custom rewrite tag
        'capability_type' => 'post',
        'has_archive' => 'projectsarchives',
        'hierarchical' => false,
        'menu_position' => null,
        'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt'),
    );
    register_post_type('projects', $args);

    $labels = array(
        'name' => 'Projects Categories',
        'singular_name' => 'Projects',
        'search_items' => 'Search Projects Categories',
        'all_items' => 'All Projects Categories',
        'parent_item' => 'Parent Project Category',
        'parent_item_colon' => 'Parent Project Category:',
        'edit_item' => 'Edit Project Category',
        'update_item' => 'Update Project Category',
        'add_new_item' => 'Add New Project Category',
        'new_item_name' => 'New Project Category',
    );

    $args = array(
        'hierarchical' => true,
        'rewrite' => array('slug' => 'projects'),
        'show_in_nav_menus' => true,
        'labels' => $labels
    );

    register_taxonomy('projectscategory', 'projects', $args);

    unset($labels);
    unset($args);
}

Lưu ý dòng sau trong đoạn mã trên. Trong dòng này, chúng tôi đang tạo thẻ tùy chỉnh của riêng bạn %projects category%

'rewrite' => array('slug' => 'projects/%projectscategory%', 'with_front' => false)

Thêm thuật ngữ phân loại vào Permalink

Bây giờ, chúng ta sẽ viết chương trình thay thế thẻ này bằng tên thuật ngữ thích hợp trong permalink. Để làm như vậy, chúng tôi sẽ phải sử dụng bộ lọc 'post_type_link'. Mã bên dưới sẽ kiểm tra danh mục được gán cho dự án. Nếu không có danh mục nào được chỉ định thì nó sẽ thay thế ‘%projectscategory% bằng ‘uncategorized’ trong permalink

'post_type_link', 'projectcategory_permalink_structure', 10, 4);
function projectcategory_permalink_structure($post_link, $post, $leavename, $sample) {
    if (false !== strpos($post_link, '%projectscategory%')) {
        $projectscategory_type_term = get_the_terms($post->ID, 'projectscategory');
        if (!empty($projectscategory_type_term))
            $post_link = str_replace('%projectscategory%', array_pop($projectscategory_type_term)->
            slug, $post_link);
        else
            $post_link = str_replace('%projectscategory%', 'uncategorized', $post_link);
    }
    return $post_link;
}

Bây giờ bạn sẽ có thể thấy liên kết sau trong thanh địa chỉ trong trình duyệt của mình cho một dự án mà bạn đã phân loại trong Magento

http://abc.com/projects/magento/your-categorized-project-name

Tuy nhiên, nếu bạn chưa phân loại thì permalink của dự án sẽ giống như thế này

http://abc.com/projects/uncategorized/your-uncategorized-project-name

Bạn có gặp lỗi 404 cho các liên kết dự án không??? . Chỉ cần đi tới phần Permalinks trong cài đặt và đảm bảo rằng các cài đặt phổ biến trong phần này không phải là mặc định và nhấn nút 'Lưu thay đổi'.

Bài đăng này có hữu ích không?

  • Mẹo & Thủ thuật WordPress
  • Với các thẻ. Bài tùy chỉnh, Permalinks, Pretty Permalinks, WordPress

Chia sẻ.

  • Sumit P

Xin lưu ý, một số liên kết trong bài đăng trên blog này có thể là liên kết liên kết. Điều này có nghĩa là nếu bạn tiếp tục mua sản phẩm bằng liên kết như vậy, chúng tôi sẽ nhận được một khoản hoa hồng nhỏ (bạn không phải trả thêm phí). Điều này giúp chúng tôi hỗ trợ blog và sản xuất nội dung miễn phí. Chúng tôi chỉ giới thiệu những sản phẩm mà chúng tôi hợp tác hoặc yêu thích. cảm ơn sự hỗ trợ của bạn