回答:
すぐに、WPスラッグの生成方法に関するページ/チュートリアル/ドキュメントを提供することはできませんが、sanitize_title()
機能を見てみましょう。
関数名で間違った印象を与えないでください。ページ/投稿タイトルとしてさらに使用するためにタイトルをサニタイズすることを意図したものではありません。タイトル文字列を受け取り、URLで使用されるように返します。
そこかもしれないコアは、追加の何かをするエッジケース(あなたはそれを確認するために、ソースを見ているだろうことsanitize_title()
になる常に生成するのに十分正確にあなたが期待する同じ)を、すべてではない場合、これは、少なくとも99%をカバーしなければならない、例。
sanitize_title
は、関数に適用されたフィルターによっても行われるのか、または関数の実行後に他の何かによって処理されるのかが完全にはわからない場合の1つです。
この機能を使用できます:
static public function slugify($text)
{
// replace non letter or digits by -
$text = preg_replace('~[^\pL\d]+~u', '-', $text);
// transliterate
$text = iconv('utf-8', 'us-ascii//TRANSLIT', $text);
// remove unwanted characters
$text = preg_replace('~[^-\w]+~', '', $text);
// trim
$text = trim($text, '-');
// remove duplicate -
$text = preg_replace('~-+~', '-', $text);
// lowercase
$text = strtolower($text);
if (empty($text)) {
return 'n-a';
}
return $text;
}
wp url sanitize関数の正確な動作の種類。
何もありません開発者モード脇からのWordPressに組み込まれWP_DEBUG
、この場合には、あまりにも多くのお手伝いをしません、。基本的に、WPは"Rewrite API"を使用します。これは、関数ベースのWP_Rewrite
クラスの低レベルラッパーであり、Codexで読むことができます。global $wp_rewrite
オブジェクトは、それを検査したり、クラスと対話するためにあなたのサービスに立っています。
Toschos "T5 Rewrite" -PluginとJan Fabrys "Monkeyman Rewrite Analyzer" -Pluginがあなたの道を案内します。GitHubの「T5 Rewrite」リポジトリwikie で見つけることができる「Monkeyman Rewrite Analyzer」とスムーズに統合するために、「T5 Rewrite」の小さな拡張機能を作成しました。
「Monkeyman」プラグインは、ツールの下の管理UIメニューにファイルされた新しいページを追加します。「T5 Rewrite」プラグインは、設定 > パーマリンクページに新しいヘルプタブを追加します。私の拡張機能は、前述のツールページにもヘルプタブを追加します。
「T5 Rewrite」プラグインがタブのコンテンツをどのように表示するかのスクリーンショットを以下に示します。
Vorlage =パターン| 説明=説明| Beispiele =例
「T5 Rewrite」プラグインは、リライトオブジェクトの検査に役立つ素晴らしい仕事をします。そして、さらに多くのことを行います。新しい可能性を追加します。したがって、それは(少なくとも私のインストールでは)私の基本的なプラグインパッケージの一部です。
実際、コア関数wp_insert_post(post.php)を見ると、次のことが行われていることがわかります。
$data['post_name'] = wp_unique_post_slug( sanitize_title( $data['post_title'], $post_ID ), $post_ID, $data['post_status'], $post_type, $post_parent );
$wpdb->update( $wpdb->posts, array( 'post_name' => $data['post_name'] ), $where );
重要なことは、wp_unique_post_slugとsanitize_titleの両方を使用することです。
wp_unique_post_slug( sanitize_title(
古い質問を再開することは許しますが、この方法が私にとって完璧に機能することがわかったのと同じ必要性がありました。
$some_string = "DON'T STOP ME NOW!";
$slug = sanitize_title(sanitize_title($some_string, '', 'save'), '', 'query');
echo $slug; // dont-stop-me-now
この方法は二重消毒を使用します。
最初のものはsave
モードを使用します。このモードでは、HTMLタグとPHPタグが削除され、アクセントが削除されます(アクセント記号付きの文字はアクセント記号なしの同等の文字に置き換えられます)。
2番目のquery
モードでは、すべてのスペースがダッシュに置き換えられ-
、他の句読点が削除されます。
これが誰かを助けることを願っています!:)