the_title_attributeの使い方と引数を入れたら動かない時のメモ【ワードプレス】

the_title_attributeの使い方と引数を入れたら動かない時のメモ【ワードプレス】
2018年8月20日2023年9月26日

the_title_attributeは、HTMLの属性で使いやすいクリーンな文字列でページタイトルを表示してくれるテンプレートタグです。よく使う例としては、aタグのtitle属性やimgタグのalt属性などにタイトルを入れる時でしょうか。

しかしこの関数、私だけかもしれませんが、取得だけしようとしたりすると「あれ?動かない」となりやすい。

という事で、今回はthe_title_attribute()の使い方と引数を入れたら動かないという場合の為のメモです。

the_title_attributeで指定できるパラメータ

基本的な内容ですが、the_title_attributeで指定できるパラメータの一覧です。

before

タイトルの前に文字列を付けられます。

the_title_attributeは、処理の過程でPHPの関数strip_tags()を使用してHTMLタグを取り除きます。ですのでbeforeパラメータにHTMLタグを入れても消去されてしまいます。

初期値は無し(空文字列)です。

after

タイトルの後に文字列を付けられます。beforeパラメータと同じく、HTMLタグは付けられません。

初期値は無し(空文字列)です。

echo

echoパラメータは真偽値(trueかfalseか)です。取得だけするのか、出力(echo)までするのかを選択できます。

falseで文字列を返すのみ、trueだと文字列を取得した後で出力(echo)まで行います。

初期値はtrueです。

post

投稿IDを数値かオブジェクトで指定します。

初期値はコード上ではget_post()となっており、つまり現在の投稿のタイトルとなります。

引数はクエリ文字列タイプ

the_title_attributeは、たいして引数(パラメータ)が多いわけでもありませんが、なぜか引数がクエリ文字列タイプとなっています。「the_〇〇」という名前の、出力してくれちゃう系テンプレートタグには珍しい気がします。

このせいで(私は)うっかり書き間違えてリンクのツールチップを空にしてしまったりしがちです。

クエリ文字列型パラメータとは

その名の通りなのですが、クエリ文字列の形で引数を指定できます。URLのクエリ(パラメータ)をイメージすればわかりやすいと思います。たくさんのパラメータを渡せる関数の場合、必要なパラメータだけ指定する事ができるので簡潔に記述できて便利です。

the_title_attributeのパラメータの書き方

実際にthe_title_attributeのようなクエリ文字列型の関数にパラメータを渡す場合の書き方です。

URLパラメータみたいですよね。よくあるPHP関数型のパラメータの指定方法とは、ちょっと違います。全体をクォーテーションで囲って、「&」で区切って一気に書きます。ただ、PHPをいじってる時にこの書き方はちょっとややこしいですよね。「&」を入れ忘れたり、文字列にクォーテーションとか付けたくなっちゃいます。抵抗がある場合は下のような書き方もできます。

おすすめの書き方

配列でキー(パラメータ名)に値を入れます。クォーテーションやら文字数は増えますが、私はこっちの方が書きやすいかも。

どちらの書き方でも、必要な値だけ指定すればいいですし、指定する順番も気にする必要はありません。

echoパラメータで出力を切り替える方法

ここも間違えやすいポイント。

基本的にtrueで出力(echo)までやってくれ、falseなら取得するのみなのですが、取得だけしたい場合の指定方法は下の様になります。

echoパラメータは0とするんですね。echo=falseではダメです。「なんでやねん?」と思った方は最後まで読んで下さい。

他の引数と組み合わせて使う時は、下の様になります。単純に「&」でつなげていきます。

なぜecho=0なのか

ここからはちょっとマニアックな話かもしれませんので、気にならない人はecho=0と書くんだと覚えてしまえばいいと思います。

でも、出力するかを指定できるパラメータ「echo」は、初期値がtrueなのに「なんでecho=0と記述しないといけないの?」って思いませんか?「なんでfalseじゃないの?」と。the_title_attributeに限らず、引数がクエリ文字列型の関数では、真偽値の引数を変更する場合、必ず1か0かで書きます。初期値はtrueとかfalseなのに。

初期値がtrueかfalseなんだったら、echo=falseとか書いても良さそうですよね。ですが、これでは指定が効きません。なぜでしょう。

クエリ文字列型から配列への変換が原因

上の基本的な書き方で、パラメータをクエリ文字列型で記述する方法と配列で記述する方法をご紹介しました。クエリ文字列タイプで書いた場合、処理の過程でこれを配列に変換します。

具体的にはthe_title_attributeの内部で使用されているwp_parse_argsという関数が、クエリ文字列型のパラメータをwp_parse_strを使って配列に変換するという作業をしています。この時に真偽値だったtrueやfalseが文字列に変換されてしまいます。

真偽判定する時にはすべて文字列になっている

以上のような理由で、echo=falseと指定しても真偽判定をする時点では文字列のfalseになっており、echo=’false’と指定したのと同じになってしまいます。

echo=falseもecho=NULLもecho=999でも、すべて判定はtrueとなります。

だから文字列でfalseと判定される、空文字(echo=)やゼロ(echo=0)としなければいけないんですね。

配列で記述すればfalseでも平気

クエリ文字列型から配列への変換の際に文字列にされてしまうという事は、初めから引数を配列で指定してあげればどうでしょうか。この場合は、wp_parse_strは使用されません。

結果、下のように配列で指定すると、falseと書いてもちゃんと認識されます。

最後に

the_title_attributeの基本的な事を書こうと思って書き始めましたが、ちょっとマニアックな記事になってしまいました。

直感的に書けるという点では、最初からパラメータを配列で指定してあげるのもいいかもしれませんね。

ちなみに最近まで知らなかったのですが、the_titleもthe_title_attribute同様に、引数がクエリ文字列型でした。取得だけしたい場合はget_the_titleを使用してしまい、引数なんて使用したことが無く気が付きませんでした。。

One Reply to “the_title_attributeの使い方と引数を入れたら動かない時のメモ【ワードプレス】”

Comments are closed for this post.

関連のある記事

【初心者向け・目的別】ワードプレスでURLやパスを取得する関数まとめ

【初心者向け・目的別】ワードプレスでURLやパスを取得する関数まとめ

記事を読む

現在の投稿のカテゴリー情報をリンク無しで取得&表示する方法【ワードプレス】

現在の投稿のカテゴリー情報をリンク無しで取得&表示する方法【ワードプレス】

記事を読む

the_category()を使ってリンク無しでカテゴリーを表示する方法【WordPress】

the_category()を使ってリンク無しでカテゴリーを表示する方法【WordPress】

記事を読む

the_category()の使い方とセパレーター無しで出力する方法【ワードプレス】

the_category()の使い方とセパレーター無しで出力する方法【ワードプレス】

記事を読む

Generic selectors
Exact matches only
Search in title
Search in content
Post Type Selectors

目次へ