カスタム投稿タイププラグインなしに.html
拡張子を追加する方法はありますか?
投稿については、私はパーマリンクの設定に/%postname.html
を使用することができます
私が使用できるページの場合:
add_action('init', 'change_page_permalink', -1);
function change_page_permalink() {
global $wp_rewrite;
if ( strstr($wp_rewrite->get_page_permastruct(), '.html') != '.html' )
$wp_rewrite->page_structure = $wp_rewrite->page_structure . '.html';
}
カスタム投稿タイプの場合
カスタム投稿タイプのURLに.html
を変更または追加するように要求する上記のようなコードはありますか。
これはうまくいくようです:
post-type/post-name.html
のような書き換え規則を作成します。配列を使用して、すべての投稿タイプに対してルールを作成するのではなく、一連の投稿タイプに対してルールを作成できます。
add_action( 'rewrite_rules_array', 'rewrite_rules' );
function rewrite_rules( $rules ) {
$new_rules = array();
foreach ( get_post_types() as $t )
$new_rules[ $t . '/([^/]+)\.html$' ] = 'index.php?post_type=' . $t . '&name=$matches[1]';
return $new_rules + $rules;
}
これらの投稿タイプ用に新しいパーマリンク構造をフォーマットします。
add_filter( 'post_type_link', 'custom_post_permalink' ); // for cpt post_type_link (rather than post_link)
function custom_post_permalink ( $post_link ) {
global $post;
$type = get_post_type( $post->ID );
return home_url( $type . '/' . $post->post_name . '.html' );
}
そして、末尾のスラッシュを削除するために正規URLのリダイレクトをやめます。たいていの場合リダイレクトを維持したいと思うかもしれないのでこれにはもう少し作業が必要かもしれません。
add_filter( 'redirect_canonical', '__return_false' );
他の人がこのあたりで言ったように、上記のことをした後にあなたはルールをフラッシュする必要があります、そしてそれはoptions-permalink.php
のDashboard -> Settings -> Permalinks
adminページを訪問することによって可能です。
あなたは組み込みのパーマリンクを置き換えるこのための書き換え規則を追加することができます。カスタム投稿タイプ "product"の場合...
add_action('init', 'add_html_ext_to_custom_post_types');
function add_html_ext_to_custom_post_types() {
add_rewrite_rule('^product/([^/]+)\.html', 'index.php?product=$matches[1]', 'top');
}
(上記の@toschoのメモのように、パーマリンクを再保存するかflush_rules
を使用して、ルールをフラッシュすることを忘れないでください)。
the_permalink()
のような関数がこれを使うとは思わないので、これらのリンクを捉えるためにpost_link
のためのフィルタを追加しなければならないかもしれません。デフォルトのパーマリンクをリダイレクトするためにredirect_canonical
フィルタを追加して、/ product/fooと/ product/foo /を/product/foo.htmlにリダイレクトすることもできます。WordPressプラグインを使って作業を進めたい場合は、WordPressプラグインリポジトリの カスタム投稿タイプパーマリンク をご覧ください。 WordPress 3.4.1でテストされ、それは完璧に動作します。
プラグインを有効にした後、Dashboard - > Settings - > Permalinksに移動してください。登録したカスタム投稿タイプごとに特定の書き換えを追加できます。