私は自分のサイトを翻訳するのにWPMLプラグインを使っています。 "vinos"というカスタム投稿タイプがあり、この引数を使用します。
$args = array(
'labels' => $labels,
'hierarchical' => false,
'supports' => array('title', 'thumbnail'),
'public' => true,
'show_ui' => true,
'show_in_menu' => true,
'menu_position' => 6,
'show_in_nav_menus' => true,
'publicly_queryable' => true,
'exclude_from_search' => false,
'has_archive' => 'nuestros-vinos/catalogo',
'query_var' => true,
'can_export' => true,
'capability_type' => 'post',
'rewrite' => array('slug' => 'nuestros-vinos/catalogo/marcas/%marcas%')
);
register_post_type('vinos', $args);
問題は、私が自分の文字列 "nuestros-vinos/catalogo/marcas"を英語に翻訳できないことです。そのため、私のURLは次のようになります。
www.domain.com/nuestros-vinos/catalogo/ --------->スペイン語で私のワインのリストをすべて表示するwww.domain.com/en/nuestros-vinos/catalogo/ ------ >ワインのリストをすべて英語で表示する
英語版では、URLは
www.domain.com/en/our-wines/catalog/
書き換え規則を使用しようとしています。
add_filter('generate_rewrite_rules', 'customposttype_rewrites');
function customposttype_rewrites($wp_rewrite) {
$newrules = array();
$newrules['en/our-wines/catalog/?$'] = 'en/index.php?post_type=vinos';
$wp_rewrite->rules = $newrules + $wp_rewrite->rules;
}
しかし、それは動作しません、常にページが見つかりません。
どうすればいいの?
ありがとう。
これはうまくいきません。
'en/index.php?post_type=vinos'
en/index.php
はありません。
'index.php?post_type=vinos'
パスでen
を検出する必要がある場合は、クエリ変数を追加してから、そのクエリ変数を書き換えに設定します。
function wpa_query_vars( $qvars ) {
$qvars[] = 'wpa_lang';
return $qvars;
}
add_filter( 'query_vars', 'wpa_query_vars' );
それからあなたの書き換え規則の中で:
$newrules['en/our-wines/catalog/?$'] = 'index.php?post_type=vinos&wpa_lang=en';
ここで述べられている解決策を試してみてください。 http://wpengineer.com/2044/custom-post-type-and-permalink/ /これは基本的にもう一度あなたのパーマリンク設定を保存することを伴います。
例:パーマリンクをデフォルト構造に設定して保存します。ご希望のパーマリンク構造に切り替えて再度保存し、カスタム投稿のパーマリンクの問題が解決しないかどうかをもう一度確認してください。
私は過去にカスタム投稿パーマリンクに関して404の問題を抱えており、上記の解決策は私のために働きました。
編集:また、うまくいけば、あなたがコーディングしている間、あなたはキャッシングプラグインを有効にしていない、これを言及するのを忘れていました。