誰かが私にナメクジを生成する機能を提供できますか?
Wordpressがスラッグを生成するために使用する関数は、いくつかの関数とフィルターに散在しています。私はそれらすべてを見つけることができません。誰かが私にスラッグを生成するための単一のphp関数を提供できますか?Wordpressのすべての機能は必要ありません。ラテン文字以外の文字をエンコードし、URLで許可されていない不正な文字を削除するだけです。
この投稿は機能を提供しますが、ラテン文字以外の文字を処理することはできません。
ありがとう!
回答
この投稿は機能を提供しますが、ラテン文字以外の文字を処理することはできません。
これは、URLにラテン語/ ASCII以外の文字を含めることができないためです。
ブラウザにラテン文字以外の文字が表示される場合がありますが、これは単なるユーザーインターフェイス機能です。
たとえば、このウィクショナリーURL:https://en.wiktionary.org/wiki/わかもの#Japanese
にアクセスすると、ブラウザのURLは日本語の文字をエンコードして実際のURLを取得します。https://en.wiktionary.org/wiki/%E3%82%8F%E3%81%8B%E3%82%82%E3%81%AE#Japanese
次にURLは、URLを表示するときにそれをデコードします。パーセント記号の付いたバージョンが実際のURLです。
アラビア語など、他の非ASCII文字コードでも同様です。スラッグを使用して投稿を作成しわかもの
、データベースを保存して確認すると、は表示されません。わかもの
が表示されます%e3%82%8f%e3%81%8b%e3%82%82%e3%81%ae
。同様に、UIには日本語の文字が表示されますが、リンクをコピーすると、エンコードされたバージョンが取得されます。
次にデータベースを更新して投稿のスラッグをに変更すると、投稿わかもの
を読み込めなくなり、404が返されます。これは、スラッグが無効であり、そのスラッグに一致するURLを読み込めないためです。
はい、ラテン文字以外の文字を%xxとしてエンコードする必要があります
あなたはurlencode
それをする必要がありますecho urlencode( $slug )