从wordpress网址中删除自定义帖子类型的标签,并保留分类法术语

时间:2019-02-26 14:59:01

标签: wordpress custom-post-type taxonomy

我已经使用以下代码注册了CPT和分类法:

// CPT & Taxonomy
add_action('init', 'marques_cpt');
function marques_cpt() {
  $labels = array(
    'name' => 'Marques',
    'singular_name' => 'Marque',
    'add_new' => 'Ajouter',
    'add_new_item' => 'Ajouter Marque',
    'edit_item' => 'Modifier Marque',
    'new_item' => 'Nouvelle Marque',
    'all_items' => 'Toutes les Marques',
    'view_item' => 'Afficher Marque',
    'search_items' => 'Rechercher Marques',
    'not_found' => 'Pas de marques',
    'not_found_in_trash' => 'Pas de marques',
    'parent_item_colon' => '',
    'menu_name' => 'Marques'
  );
  $args = array(
    'labels' => $labels,
    'public' => true,
    'publicly_queryable' => true,
    'show_ui' => true,
    'show_in_menu' => true,
    'query_var' => true,
    'taxonomies' => array('marquecategory'),
    'rewrite' => array('slug' => 'marque/%marquescategory%', 'with_front' => false), 
    'capability_type' => 'post',
    'has_archive' => 'marques',
    'hierarchical' => false,
    'menu_position' => null,
    'supports' => array('title', 'editor', 'author', 'thumbnail', 'excerpt'),
  );
  register_post_type('marque', $args);

  $labels = array(
    'name' => 'Marques Catégories',
    'singular_name' => 'Marques',
    'search_items' => 'Rechercher Marques Catégories',
    'all_items' => 'Toutes Catégories',
    'parent_item' => 'Parent Catégories',
    'parent_item_colon' => 'Parent Catégories Marques:',
    'edit_item' => 'Modifier Catégories Marques',
    'update_item' => 'Mettre à jour Catégories Marques',
    'add_new_item' => 'Ajouter Catégories Marques',
    'new_item_name' => 'Nouvelle Catégories Marques',
  );

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

  register_taxonomy('marquescategory', 'marque', $args);

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

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

此代码返回url:domain.come / marque / taxonomy-term / post-slug 我需要从网址中删除CPT子弹“ marque”并保留分类词:domain.come / taxonomy-term / post-slug 我设法通过从重写中删除'marque /'来做到这一点:

'rewrite' => array('slug' => 'marque/%marquescategory%', 'with_front' => false),

它工作正常,但是当我这样做时,其他简单的帖子和页面返回404页面!

0 个答案:

没有答案