2016-07-04 5 views
1

パーマリンクのワードプレスでいくつか問題があります。Wordpressで同じスラッグ名を使用したときに競合が発生する

私はパーマリンクを持っているページ「グリッド・サービス」を作成しました: example.com/grid-services/

私も登録してcostumポストタイプ「市場」、と私は名前の市場を作成した後、パーマリンクと「グリッド・サービス」、: example.com/markets/grid-services/

私はexample.com/grid-services/ URLにアクセスしようとすると、それが自動に例に私をリダイレクト問題 .com/markets/grid-services/page url

私が試したこと 投稿タイプを登録すると、別の組み合わせでコードを変更しようとしましたが、何も動作していないようです。

register_post_type('markets', 
array(
    'labels' => $labels, 
    'public' => true, 
    'supports' => $supports, 
    'hierarchical' => true, 
    'rewrite' => array("slug" => "markets"), 
    'has_archive' => false, 
) 

);

何が問題なのですか?あなたを助けることができる別の関数、手渡す

+0

'' wp_insert_post_data 'にフィルタを追加します。そこでは、スラッグで何か特別な価値を追加することができます。それがあなたの問題を解決します。 – Mickey

+1

申し訳ありませんが、これは私の最初のWordPressのプロジェクトです、より具体的にお願いしますか? – ucu13

+0

次の記事 - https://codex.wordpress.org/Plugin_API/Filter_Reference/wp_insert_post_data これが役立つことを願っています。 – Mickey

答えて

0

Finalyは、私はちょうどこの2つの設定

'public' => false, 
    'show_ui' => true, 

を追加costumポスト からパーマリンクを削除しました今はすべてそれは大丈夫と思われる。 ありがとうございます。

0

- 私は単純な答えを見つけてい

function wp_cpt_unique_post_slug($slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug) { 
    if (in_array($post_status, array('draft', 'pending', 'auto-draft'))) 
     return $slug; 

    global $wpdb, $wp_rewrite; 

    // store slug made by original function 
    $wp_slug = $slug; 

    // reset slug to original slug 
    $slug = $original_slug; 

    $feeds = $wp_rewrite->feeds; 
    if (! is_array($feeds)) 
     $feeds = array(); 

    $hierarchical_post_types = get_post_types(array('hierarchical' => true)); 
    if ('attachment' == $post_type) { 
     // Attachment slugs must be unique across all types. 
     $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND ID != %d LIMIT 1"; 
     $post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_ID)); 

     if ($post_name_check || in_array($slug, $feeds) || apply_filters('wp_unique_post_slug_is_bad_attachment_slug', false, $slug)) { 
      $suffix = 2; 
      do { 
       $alt_post_name = substr ($slug, 0, (200 - (strlen($suffix) + 1))) . "-$suffix"; 
       $post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_ID)); 
       $suffix++; 
      } while ($post_name_check); 
      $slug = $alt_post_name; 
     } 
    } elseif (in_array($post_type, $hierarchical_post_types)) { 
     if ('nav_menu_item' == $post_type) 
      return $slug; 
     // Page slugs must be unique within their own trees. Pages are in a separate 
     // namespace than posts so page slugs are allowed to overlap post slugs. 
     $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d AND post_parent = %d LIMIT 1"; 
     $post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_type, $post_ID, $post_parent)); 

     if ($post_name_check || in_array($slug, $feeds) || preg_match("@^($wp_rewrite->pagination_base)?\[email protected]", $slug) || apply_filters('wp_unique_post_slug_is_bad_hierarchical_slug', false, $slug, $post_type, $post_parent)) { 
      $suffix = 2; 
      do { 
       $alt_post_name = substr($slug, 0, (200 - (strlen($suffix) + 1))) . "-$suffix"; 
       $post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_type, $post_ID, $post_parent)); 
       $suffix++; 
      } while ($post_name_check); 
      $slug = $alt_post_name; 
     } 
    } else { 
     // Post slugs must be unique across all posts. 
     $check_sql = "SELECT post_name FROM $wpdb->posts WHERE post_name = %s AND post_type = %s AND ID != %d LIMIT 1"; 
     $post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $slug, $post_type, $post_ID)); 

     if ($post_name_check || in_array($slug, $feeds) || apply_filters('wp_unique_post_slug_is_bad_flat_slug', false, $slug, $post_type)) { 
      $suffix = 2; 
      do { 
       $alt_post_name = substr($slug, 0, (200 - (strlen($suffix) + 1))) . "-$suffix"; 
       $post_name_check = $wpdb->get_var($wpdb->prepare($check_sql, $alt_post_name, $post_type, $post_ID)); 
       $suffix++; 
      } while ($post_name_check); 
      $slug = $alt_post_name; 
     } 
    } 

    return $slug; 
} 
add_filter('wp_unique_post_slug', 'wp_cpt_unique_post_slug', 10, 6); 
関連する問題