投稿スラッグではなく、パーマリンクからの場合は url_to_postid()
というテンプレートタグが使えます。ただし、これを使うと現在のクエリー状態 (投稿ループの状態) を破壊するので、使える場所は限られます。
ヒントになるかどうかわかりませんが、ググったらそれっぽいのが出てきますね(コードの妥当性は未検証)
http://www.devdevote.com/cms/wordpress-hacks/get_id_by_post_name/
# 気になる点としては、
# DBに直接クエリ(と$post_name)投げます。
# そのまま echo してます
lilyfan様、kurosquare様 ご回答ありがとうございます。
>lilyfan様
投稿スラッグからURL文字列を作って、url_to_postid() で希望通りIDを取得できました。
ありがとうございました。
>kurosquare様
こちらの方法ですと、直接スラッグからIDが取得できそうですのでスマートですね。
気になる点としてご指摘の2点ですが、これらによって何か問題が発生する危険性があるということでしょうか?
PHPもSQLも初心者レベルですので、甘えるようで申し訳ありませんが、よければご教示いただければ幸いです。
セキュリティに通じているわけではないので、的外れかもしれませんが、入出力値を適切にチェックしていないと、例えばSQLインジェクションなどの攻撃にさらされる「可能性がある」ということです。esc_html()とかesc_sql()を使うことが推奨されているようです。
あと、他のサイトにはページスラッグからIDを取得する方法というのもありました。まあ、ほとんど同じですが。