私のページの1つで、スラッグを変更して別のURLを作成しました。例えば。
旧: http://example.com/old-slug
新規: http://example.com/new-slug
WordPressは http://example.com/old-slug を http://example.com/new-slug にリダイレクトすることをしました。
私が使っているプラグインが問題のスラッグを利用しているため、リダイレクトがその動作をオーバーライドしているため、この動作を削除したいと思います。
この質問 をチェックし、wp_postmeta
テーブルの_wp_old_slug
のインスタンスをチェックしましたが、何も返されません。私のサーバーはNginxなので、.htaccessファイルの影響を受けません。
このリダイレクトを削除するために他にできることはありますか?
これ(あなたのfunctions.php
内)はそれをオフにします(しかし私が残したコメントも見てください):
remove_action('template_redirect', 'wp_old_slug_redirect');
あなたのwp_postmeta
テーブルが_wp_old_slug
キーを持っていないのは奇妙に思えます - それを行うコードの一部はwp-includes/query.php
(wp_old_slug_redirect())です - それが呼ばれているかどうか調べるためにそこにexitまたはdebugステートメントを追加できます。
また、WordPressがパーマリンクを見つけられない場合は、先頭が一致する投稿を探します。パーマリンク /foobar の投稿がある場合は、 /foo にリダイレクトされます。
これは私のために働いた:
remove_filter('template_redirect', 'redirect_canonical');
ソース: http://biostall.com/prevent-wordpress-redirecting-to-nearest-matching-url/ /
スラッグ変更後に自動リダイレクトを手動で削除するには、phpMyAdminを使用してデータベースから "wp-redirection-items"から対応する行を削除するだけです。
これは、特定の投稿のリダイレクトを削除できるようにするための最善かつ最も簡単な方法です。より多くの詳細はここで見つけることができます http://couponnexus.com/remove-wordpress-redirects-changing-slug/
パーマリンクのリセットが役に立ちました。 Settings -> Permalinks
に行き、デフォルトを選び、Save Changes
を押してください。それからあなたの構造を選び、もう一度Save Changes
を押してください。
すべてのWordPress投稿には独自のスラッグがあり、それはあなたの投稿のタイトルによって自動的に生成されます。後で投稿スラグを変更することにした場合、WordPressは古いものを覚えていて新しいものにリダイレクトします。小さなスニペットを使ってWordPressのコアからいくつかのアクションを削除することで、WordPressでの古いポストスラグのリダイレクトを防ぐことができます。
現在のテーマの functions.php ファイルに次のコードを追加して、WordPressが古い投稿スラッグを新しいものにリダイレクトしないようにします。
remove_action( 'template_redirect', 'wp_old_slug_redirect');
remove_action( 'post_updated', 'wp_check_for_changed_slugs', 12, 3 );