web-dev-qa-db-ja.com

.htaccessを使ってWordPressのURLからWordを削除するにはどうすればいいですか?

私が作っているサイトには "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ページの使用に戻るだけです。

2
dcp3450

.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ファイルを編集する必要はありません。

0
Tim McClure