私はウェブサイト上で様々なカスタム投稿タイプのためのカスタムパーマリンクを作成しました。彼ら全員はうまくいった。最近まで私はもう一つ追加しましたが、私は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);
あなたは現在あなたのリライトルールをグローバルスコープに置いています、それはあなたのファイルがロードされるとすぐにそれらが実行されることを意味します。代わりに、それらを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;
}
または
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' );