Wordpress:产品名称的数字slug返回404

时间:2017-07-13 16:03:23

标签: wordpress woocommerce

我的网站上安装了woocommerce。我需要产品slug为数字

e.g。 /目录/ zapasnye-chasti-K-oborudovaniyu / zakleivayuschie-gruppy / 1024 /

但它返回404页面。我尝试将产品永久链接设置为a hello! b hello! c hello! d hello! e hello! 并将其添加到functions.php:

/catalog/%product_cat%/%postname%/

完美地适用于数字链接,但它使得置于第一级别类别的产品返回404页面

e.g。 /目录/ vakuumnoe-oborudovanie / vakuumnyy_upakovshchik_a2vac5002 /

虽然子类别中的产品运作良好

e.g。 /目录/ etiketirovochnoe-oborudovanie / oborudovanie-A2 / A2-L120-slim_1 /

我知道它为什么会这样,但我找不到解决方法。这个错误非常受欢迎,但我找不到任何实际的解决方案。我所需要的只是让产品中的数字slug显示所需的页面。有没有人有任何想法?

1 个答案:

答案 0 :(得分:0)

找到解决方案:

   function do_rewrite(){
        global $wp_rewrite;
        $wp_rewrite->rewritereplace[16] = '(.+)';
        add_rewrite_tag('%product%', '(.+)');
        $post_type = 'product';
        add_rewrite_tag( "%product_num%", '(.+)', "post_type=$post_type&product=" );
        $permastruct = "catalog/(.+)/%product_num%"; //for permalink structure: /catalog/%product_cat%/

        $args = array(
            'with_front'  => true,
            'paged'       => true,
            'ep_mask'     => EP_NONE,
            'feed'        => false,
            'forcomments' => false,
            'walk_dirs'   => true,
            'endpoints'   => false,
        );

        add_permastruct( $post_type, $permastruct, $args );
        flush_rewrite_rules();//comment this after first run

    }
    add_action('init', 'do_rewrite',1,0);