Wsparcie » Wtyczki » Problem z linkowaniem w archiwum custom post type

  • Witajcie,

    stworzyłem katalog produktów z użyciem custom post type. Praktycznie wszystko działa, ale jak to bywa jest zawsze jakieś ale. Strona katalogu jest zawarta w pliku archive-products i wyświetla kategorie i produkty. Problemem jest linkowanie produktów – na stronie archiwum są widoczne, ale po kliknięciu wyświetla 404, to samo dzieje się po dodaniu nowego przedmiotu i przejściu w podgląd. Ścieżka jaką generuje wp to domena.pl/products/nazwa-produktu, ale po ręcznym dodaniu do ścieżki nazwy kategorii /products/nazwa-kategorii/nazwa-produktu już się wyświetla. Poniżej przesyłam kod z pliku functions

    add_filter('post_type_link', 'products_type_link', 1, 3);
    
    function products_type_link($url, $post = null, $leavename = false){
    
        // products only
        if ($post->post_type != 'products') {
            return $url;
        }
    
        $post_id = $post->ID;
        $taxonomy = 'product-categories';
        $taxonomy_tag = '%' . $taxonomy . '%';
    
        // Check if exists the tag
        if (strpos($taxonomy_tag, $url) < 0) {
            return $url;
        }
    
        // Get the terms
        $terms = wp_get_post_terms($post_id, $taxonomy);
    
        if (is_array($terms) && sizeof($terms) > 0) {
            $category = $terms[0];
        }
    
        // replace taxonomy tag with the term slug: /products/dvd/productname
        return str_replace($taxonomy_tag, $category->slug, $url);
    }
    
    function products_add_rewrite_rules() {
        global $wp_rewrite;
    	global $wp_query;
    
    	register_post_type('products', array(
            'label' => 'Products',
            'description' => 'GVS products and services.',
            'public' => true,
            'show_ui' => true,
            'show_in_menu' => true,
            'capability_type' => 'post',
            'hierarchical' => true,
            'rewrite' => array('slug' => 'products'),
            'query_var' => true,
            'has_archive' => true,
            'menu_position' => 6,
            'supports' => array(
                'title',
                'editor',
                'excerpt',
                'trackbacks',
                'revisions',
                'thumbnail',
                'author'),
            'labels' => array (
                'name' => 'Products',
                'singular_name' => 'product',
                'menu_name' => 'Products',
                'add_new' => 'Add product',
                'add_new_item' => 'Add New product',
                'edit' => 'Edit',
                'edit_item' => 'Edit product',
                'new_item' => 'New product',
                'view' => 'View product',
                'view_item' => 'View product',
                'search_items' => 'Search Products',
                'not_found' => 'No Products Found',
                'not_found_in_trash' => 'No Products Found in Trash',
                'parent' => 'Parent product'),
            )
        );
    
        register_taxonomy('product-categories', 'products', array(
            'hierarchical' => true,
            'label' => 'Product Categories',
            'show_ui' => true,
            'query_var' => true,
            'rewrite' => array('slug' => 'products'),
            'singular_label' => 'Product Category')
        );
    
    add_rewrite_rule("products/?$", 'index.php?post_type=products&product-categories=', 'top');
    
        add_rewrite_rule("products/([^/]+)/?$", 'index.php?post_type=products&product-categories=$matches[1]', 'top');
    
        add_rewrite_rule("products/([^/]+)/([^/]+)/?$", 'index.php?post_type=products&product-categories=$matches[1]&products=$matches[2]', 'top');
    
        add_rewrite_rule("products/([^/]+)/page/([0-9]{1,})/?$", 'index.php?post_type=products&paged=$matches[1]', 'bottom');
    
    	flush_rewrite_rules();
    }
    add_action('init', 'products_add_rewrite_rules');

    Walczę z tym od kilku dni i albo działa linkowanie produktów (po usunięciu add_rewrite_rule), albo kategorii w archiwum produktów.

  • The topic ‘Problem z linkowaniem w archiwum custom post type’ is closed to new replies.