Удалите пользовательский тип сообщений из WordPress URL и сохраните термин таксономии - PullRequest
0 голосов
/ 26 февраля 2019

Я зарегистрировал 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:

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

он работает отлично, нокогда я это сделал, другие простые посты и страницы возвращали страницу 404 !!

...