web-dev-qa-db-ja.com

カスタム投稿タイプのpermastructが4つのケースのいないかで機能しない

私はウェブサイト上で様々なカスタム投稿タイプのためのカスタムパーマリンクを作成しました。彼ら全員はうまくいった。最近まで私はもう一つ追加しましたが、私は8-oを働かせられません。 "company"構造体は機能しておらず、404を返します。

誰かが私の思考に欠陥を見つけたり、私を正しい方向に導いたりすることができますか?私は非常に愚かなことを忘れている必要があります;-)

ああ、私はまた古いパーマリンク/パーマリンクキャッシュ/をフラッシュするためにパーマリンク設定ページに行きました...

これがカスタム構造のコードです。

// rewrite rewrite 
 global $ wp_rewrite; 
 
 $ wp_rewrite-> add_rewrite_tag( "%merkname%"、 '([^ /] +)'、 "merk =") ; 
 $ wp_rewrite-> add_permastruct( 'merk'、 '/ merken /%merkname%'、false); 
 
 $ wp_rewrite-> add_rewrite_tag( "%modelname%"、 '([^ /] +)'、 "model ="); 
 $ wp_rewrite-> add_permastruct( 'model'、 '/ merken /%merkname%/%modelname%'、false); 
 
 $ wp_rewrite-> add_rewrite_tag( "%carname%"、 '([^ /] +)'、 "car ="); 
 $ wp_rewrite-> add_permastruct( 'car'、 '/ merken /%merkname%/%モデル名%/%carname%'、false); 
 
 $ wp_rewrite-> add_rewrite_tag( "%companyname%"、 '([^ /] +) '、 "company ="); 
 $ wp_rewrite-> add_permastruct(' company '、'/company /%companyname% '、false); 
 
 function kw_custom_permalink($ permalink) 、$ post、$ leavename){
 
 if( ''!= $パーマリンク&&!in_array($ post-> post_status、array( 'draft'、 'pending'、 'auto-draft) '))){
 
 $ merkname =' '; 
 $ modelname =' '; 
 $ carname =' '; [.___ _。] $ companyname = ''; 
 
 if(strpos($パーマリンク、 '%merkname%')!== false){
 $ merkname = $ post-> post_name; 
} 
 
 if(strpos($パーマリンク、 '%modelname%')!== false){
 $ merkpost = get_post(get_post_meta($ post-> ID、 "merk"、true)); 
 $ merkname = $ merkpost-> post_name; 
 $ modelname = $ post-> post_name; 
} 
 ] 
 if(strpos($パーマリンク、 '%carname%')!== false){
 $ merkpost = get_post(get_post_meta($ post-> ID、 "_car_merk"、true) )
 $ merkname = $ merkpost-> post_name; 
 
 $ modelpost = get_post(get_post_meta($ post-> ID、 "_car_model"、true)); [.____ $ modelname = $ modelpost-> post_name; 
 $ carname = $ post-> post_name; 
} 
 if(strpos( $パーマリンク、 '%companyname%')!== false){
 $ company name = $ post-> post_name; 
 
 
 $パーマリンク= str_replace(
 array(
 $ leavename? '': '%postname%'、
 '%post_id%'、
 '%merkname%'、
 '%modelname%'、
 '%carname % '、
、'%companyname% '、
 $の名前ですか? '': '%pagename%'、
配列、
 $ post-> post_name、
 $ post-> ID、
 $ merkname、
 $モデル名、
 $ carname、
 $ companyname、
 $ post-> post_name、
)、
 $ permalink 
); 
 
} 
 return $ permalink; 
} 
 add_filter( 'post_type_link'、 'kw_custom_permalink'、 10、3);
3
JosFabre

あなたは現在あなたのリライトルールをグローバルスコープに置いています、それはあなたのファイルがロードされるとすぐにそれらが実行されることを意味します。代わりに、それらをinitフックに追加するか、代わりにgenerate_rewrite_rulesフィルタを使用するように書き換えてください。

add_action('generate_rewrite_rules', 'themes_dir_add_rewrites');

function themes_dir_add_rewrites() {
  $theme_name = next(explode('/themes/', get_stylesheet_directory()));

  global $wp_rewrite;
  $new_non_wp_rules = array(
    'css/(.*)'       => 'wp-content/themes/'. $theme_name . '/css/$1',
    'js/(.*)'        => 'wp-content/themes/'. $theme_name . '/js/$1',
    'images/wordpress-urls-rewrite/(.*)'    => 'wp-content/themes/'. $theme_name . '/images/wordpress-urls-rewrite/$1',
  );
  $wp_rewrite->non_wp_rules += $new_non_wp_rules;
}

Hongkiatからの撮影

または

function josfaber_add_rules() {
    global $wp_rewrite;

    $wp_rewrite->add_rewrite_tag("%merkname%", '([^/]+)', "merk=");
    $wp_rewrite->add_permastruct('merk', '/merken/%merkname%', false);

    $wp_rewrite->add_rewrite_tag("%modelname%", '([^/]+)', "model=");
    $wp_rewrite->add_permastruct('model', '/merken/%merkname%/%modelname%', false);

    $wp_rewrite->add_rewrite_tag("%carname%", '([^/]+)', "car=");
    $wp_rewrite->add_permastruct('car', '/merken/%merkname%/%modelname%/%carname%', false);

    $wp_rewrite->add_rewrite_tag("%companyname%", '([^/]+)', "company=");
    $wp_rewrite->add_permastruct('company', '/company/%companyname%', false);
}
add_action( 'init', 'josfaber_add_rules' );
1
Tom J Nowell