web-dev-qa-db-ja.com

ページのスラッグを変更した後にリダイレクトを削除する

私のページの1つで、スラッグを変更して別のURLを作成しました。例えば。

旧: http://example.com/old-slug

新規: http://example.com/new-slug

WordPressは http://example.com/old-slughttp://example.com/new-slug にリダイレクトすることをしました。

私が使っているプラ​​グインが問題のスラッグを利用しているため、リダイレクトがその動作をオーバーライドしているため、この動作を削除したいと思います。

この質問 をチェックし、wp_postmetaテーブルの_wp_old_slugのインスタンスをチェックしましたが、何も返されません。私のサーバーはNginxなので、.htaccessファイルの影響を受けません。

このリダイレクトを削除するために他にできることはありますか?

3
harryg

これ(あなたの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 にリダイレクトされます。

5
William Turrell

これは私のために働いた:

   remove_filter('template_redirect', 'redirect_canonical');  

ソース: http://biostall.com/prevent-wordpress-redirecting-to-nearest-matching-url/ /

2
Faiyaz Alam

スラッグ変更後に自動リダイレクトを手動で削除するには、phpMyAdminを使用してデータベースから "wp-redirection-items"から対応する行を削除するだけです。

これは、特定の投稿のリダイレクトを削除できるようにするための最善かつ最も簡単な方法です。より多くの詳細はここで見つけることができます http://couponnexus.com/remove-wordpress-redirects-changing-slug/

0
Lithin

パーマリンクのリセットが役に立ちました。 Settings -> Permalinksに行き、デフォルトを選び、Save Changesを押してください。それからあなたの構造を選び、もう一度Save Changesを押してください。

0
Kęstutis

すべての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 );
0
Avinash Singh