プログラミング備忘録

忘れない様にメモ

*

ショートコードで最新記事のブログカードを表示させる

      2019/07/03

ワードプレスの投稿記事内にphpスクリプトを書きたい思ったことはありませんか?
さんざんテンプレートをいじくってきた僕ですが投稿記事内にphpスクリプトを書いたことがありませんでした。

やり方はショートコード。
知ってましたけど、今いち需要がないのと、まあこれが一番の理由ですがfunctions.phpいじるの面倒くさ〜と思っていてやった事がありませんでした。

でも、今日はちょっと時間があって、なおかつちょっとやる気が出てるのでショートコードの設定をしてみようと思います。

ショートコードはよく考えたらいつも使っていた

プラグインですがショートコードは長いことお世話になっていたのを思い出しました。
「blogcard」と「speech_bubble」

blogcard

みんな使ってますよね。
記事へのリンクをサムネイル画像と抜粋テキストを付けて表示してくれるプラグイン。

投稿記事の中では頻繁に使わせてもらってます。

こんな感じですね。↓

40代未経験なんですが今からプログラマーとしてIT関連で働きたい
「40代で未経験なんですが今からプログラマーとしてIT関連で働きたいんです」 こんな事を言うと 「なんて無謀な!」「絶対無理」「...

speech_bubble

こちらも有名なプラグイン。
吹き出しを表示するプラグインでキャラクターに吹き出しでセリフを言ってもらいたいときに使ってます。

こんな感じです。↓

スピーチバブルです!

自作のショートコードはどんな機能にする?

自作のショートコードはどんな機能にするか?
最新の投稿へのリンクを表示するブログカードを作りたい。

実はショートコード自体に興味があったわけじゃなくて、これを作りたかったのですよ。
それで、投稿記事に中にphpスクリプトを書くには結局ショートコードしかないなと思いましてね。

投稿記事に中にphpスクリプトを書くにはショートコード

これだとちょっと意味が違っちゃいますね。

ショートコードはphpスクリプトをfunctions.phpやプラグインに設置してその出力結果を投稿記事内に表示させる機能。

↑正確にはこれですね。

さっそく実践、まずはテストから

といってもやってみたらショートコードの設定自体は実に簡単。
これをfunctions.phpに書くだけ。

add_shortcodeの中の引数は
●記事の中に書く文字列
last_post_blogcard
●関数名
last_post_blogcard(ここでは同じにしてるがもちろん別々にしてOK)

出力はechoではなくreturnにする。
echoだと意図した場所に表示されないことがある。

functions.phpのようなphpファイルには最後のphp閉じタグ ?>は付けない。
最後のphp閉じタグは省略してもOK、というか「付けたらダメ」とも言われている。
知らずに入った空白文字などを認識するエラー防止のためだそうだ。

ここまでをfunctions.phpに設定して、投稿エディターで記事の中に
[last_post_blogcard]
を書いたらあっさり成功。
投稿記事中のショートコードを書いた部分に「最新記事のブログカード」というテキストが表示されました。

次は最新記事を持ってくる機能

最新記事を持ってくる関数・・・なんだっけな、最近ワードプレスいじってないからすっかり忘れている。
ググります。

最新の記事を一個だけ引っ張ってきてそのパーマリンクを取得して出力。

functions.phpに書くのは次のようなスクリプトになりますね。

とりあえずここまでのテストをしてみます。
ショートコードを書いた投稿記事はどうなっているか。
投稿記事中のショートコードを書いた部分に最新記事のurlが表示されました。

最新記事のURLでブログカードを表示させる

アホみたいですけど試しに力技をやってみる。
ショートコードの入れ子。

プラグインPz-HatenaBlogCardの引数部分に自作ショートコードを入れてみる。
[blogcard url=[last_post_blogcard]]
だめでした。
考えてみりゃ当たり前です。
記事として表側に表示される自作ショートコードの結果を別のショートコードの引数に入れられるわけがない。

となるとふりだしに戻るわけで。

あかん、時間がない。今回はここで終了!

続きはこちらの記事で

ショートコードで最新記事のブログカードを表示させる 第2弾
前回失敗に終わった「ショートコードで最新記事のブログカードを表示させる」の第2弾です。 結論を言ってしまうと自作ショートコー...

この記事は役に立ちましたか? はい いいえ 0人中0人が役に立ったと言っています。

 - PHP