私が作っているサイトには "Focus"というポストタイプがあります。彼らはwww.mysite.com/focus/page-post-name
のようにURLを入力する必要があるので、私はポストタイプslugを "focus"として持っています。
もちろんアーカイブページはwww.mysite.com/focus
なので、特定のページをアーカイブページにする必要があるため、これが問題になります。メタボックスは、設定を構築してページに追加するために使用されます。それはpost-typeによって予約されているので、私はただ "Focus"と呼ばれるページを作成することはできません。
私のアイデアは、 "Our Focus"というページを作成し、その結果、URLをwww.mysite.com/our-focus
にすることです。
アーカイブが使用されているように見せるために、そのURLから "our-"を削除するだけです。
Has_archiveをfalseに設定しようとしましたが、それはarchive.phpページの使用に戻るだけです。
.htaccess
タグの間にある<IfModule mod_rewrite.c>
ファイルに以下を追加できます。
RewriteCond %{HTTP_Host}
RewriteRule ^our-focus/(.*)$ /focus/$1 [R=301,L]
あなたの.htaccess
は次のようになります。
# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ - [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
# Custom Rewrite
RewriteCond %{HTTP_Host}
RewriteRule ^our-focus/(.*)$ /focus/$1 [R=301,L]
</IfModule>
# END WordPress
その結果、次のことが行われます。
http://example.com/our-focus/test
にリダイレクトします。
http://example.com/focus/test
私が正しく理解していれば、/ focusスラッグを使用する投稿タイプがありますが、Our Focusという通常のページでは代わりにそのスラッグを使用する必要があります。アーカイブが有効かどうかにかかわらず、そのページを使用するにはカスタム投稿タイプのスラッグを書き換える必要があります。
テーマのfunctions.phpファイルでカスタム投稿タイプを作成した場合は、 'rewrite'パラメータを使用して別のスラッグを設定できます。例えば:
add_action('init', 'register_cpt');
function register_cpt() {
register_post_type('focus', array(
'label' => 'Focus',
'rewrite' => array('slug' => 'REWRITE-SLUG', 'with_front' => true),
)
) ); }
'REWRITE-SLUG'をあなたの選んだスラグに置き換えます。
そのスラッグはまだカスタム投稿タイプのスラッグと競合するので、.htaccessリライトを単独で使用してもうまくいきません。カスタム投稿タイプのスラッグを書き換える必要があるでしょう、そしてあなたはちょうどページの編集スクリーンのパーマリンクを/ focusに変更することができます。 .htaccessファイルを編集する必要はありません。