web-dev-qa-db-ja.com

WordPressがメディアアイテムのナメクジを予約しないようにしますか?

私はいくつかの奇妙なふるまいを経験しています、それは明らかにWordPressで「箱から出して」起こる。

services.jpg;という名前のメディアマネージャを通してファイルをアップロードするなら、パーマリンクhttp://example.com/services/;でページを作成しようと試みてください。添付ファイルはすでにそのスラッグを使っているので、代わりにスラッグservices-2が与えられます。

http://example.com/services/にアクセスすると添付ファイルページがロードされます。

添付ファイルの書き換えを変更するためのプラグインを有効にしたり、functions.phpに何かを追加したりしたことはありません。

誰かが前にこれに遭遇したことがありますか?この機能を無効にする場所を知っていますか?

6
Matt Keys

ご回答ありがとうございました。私はmacemmekの解決策を試してみましたが、それが私をさらに良い解決策に導いたと思います。

add_filter( 'wp_unique_post_slug_is_bad_attachment_slug', '__return_true' );

必要なのはそれだけです。これにより、添付ファイルのデフォルトのスラッグが自動的に「スキップ」されます。そのため、通常スラッグ "services"を取得する可能性のある添付ファイルは、スラッグ "services-2"を取得します。

5
Matt Keys

投稿が添付ファイルタイプの場合、wp_unique_post_slug()をフックして元のスラッグに文字列を追加することができます。投稿タイトルに基づく元のスラッグは無料のままです。

Rachel Bakerのコメントの後に更新されました。元のスラッグサフィックスはランダムな文字列です。一意性を保証するものではありませんが、単純な使用例では十分な場合があります。

add_filter( 'wp_unique_post_slug', 'wpse17916_unique_post_slug', 10, 6 );
function wpse17916_unique_post_slug( $slug, $post_ID, $post_status, $post_type, $post_parent, $original_slug ) {
  if ( 'attachment' == $post_type )
    $slug = $original_slug . uniqid( '-' );
  return $slug;
}
4

これは正常な動作であり、停止するためにできることはあまりないという点で、トムのコメントは正しいです。

ただし、物をアップロード/作成した後は、ナメクジを変更できます。リンクが検索エンジンで既知/公開/リストされている場合はこれを行うべきではありませんが、アップロード後にたまにこの問題を修正しようとしている場合は、添付ファイルのスラッグを編集できます(services-attachment)、ページのスラッグをservicesに編集します。

これを行うには、[メディア]に移動し、編集する添付ファイルの下の[編集]をクリックします(または、グリッドビューの場合、添付ファイルをクリックし、[詳細の編集]をクリックします)。上部にパーマリンクが表示されます。スラグを変更しましょう。

次に、ページ自体に対して同じプロセスを繰り返します。

1
Tim Malone

私はあなたがここでする必要があるのは人々がメディアアイテムを見るのを防ぐためにリダイレクトを使うことだと思います。それはここに提示された他の解決策とよく合うです。メディアアイテムのスラッグの前に何かを付け加えて、メディアページを「取り除く」ためのリダイレクトを書いてください。

0
DigitalDesignDj