前回失敗に終わった「ショートコードで最新記事のブログカードを表示させる」の第2弾です。
結論を言ってしまうと自作ショートコードで最新記事のブログカードを表示させることは断念しました。
既存のプラグインをカスタマイズすることによって「最新記事のブログカードを表示させる」機能を実装しました。
なので実質的なタイトルは「ブログカードのプラグインを編集して最新記事を表示出きるようにする」です。
ショートコードで引数を設定する
前回のショートコードのお勉強の続きでショートコードで引数を使えるようにしてみます。
記事内に書くショートコードに
[last_post_blogcard test=""]
のように引数testを設定出来るのです。
つまりパラメータを渡せるということ。
shortcode_atts()関数を使うとショートコードに引数を設定出来ます。
function last_post_blogcard($atts){ $a = shortcode_atts( array( 'test' => 'something', ), $atts ); return "引数testの内容は{$a['test']}"; add_shortcode('last_post_blogcard', 'last_post_blogcard'); }
こんな感じで引数testを設定しました。
記事に書くショートコードで引数に任意の文字列を入れてみます。↓
[last_post_blogcard test="プログラミング備忘録"]
ショートコードの結果↓
引数を渡して取り出し表示することが出来ました。
結局Pz-HatenaBlogCardをカスタマイズする
ここまでショートコードをいじってきて引数の設定取り出しも出来るようになったんだけど、目的である最新記事をブログカードで表示させるのはプラグインをカスタマイズしてやることにしました。
というか、最初それをやるつもりでいたんだけど、Pz-HatenaBlogCardのファイルを見てもどこを弄ればいいのかわからなかったんです。
それで自作ショートコードで実現しようと思いました。
しかしショートコードを色々テストしていたらどこを弄ればいいかわかったんですよ。
ということでプラグイン「Pz-HatenaBlogCard」をカスタマイズします。
Pz-HatenaBlogCardのPHPファイルを編集
プラグインPz-HatenaBlogCardのフォルダからpz-hatenablogcard.phpを開いて編集します。
編集する人は必ずバックアップを取って自己責任でやってくださいよ。
pz-hatenablogcard.phpの240行あたり
// リンク先URL $url = isset($atts['url']) ? $atts['url'] : null;
これを見つけてください。
これを編集します。
$url = isset($atts['url']) ? $atts['url'] : null;//ここは変更なし。 $data = get_posts('post_type=post&order=DESC&orderby=date&showposts=1'); if(isset($data[0])){$last_post_url=get_permalink($data[0]->ID);} if(!$atts['url']){$url =$last_post_url;}
最新の記事の情報をデータベースから引っ張ってきて記事IDからパーマリンクを取得します。
ショートコードの引数[url]が空だったら、そこに最新記事のパーマリンクを格納します。
↑こういう風にブログカードのショートコードの引数[url]を空のままにしておくと
↑こういう風にショートコードの引数[url]に表示させたい記事のurlを入れるという通常のやり方にすると
まとめ
結局目的は達成しました。
プラグイン「Pz-HatenaBlogCard」を3行だけ(1行に書けば1行ですけど)編集することで実現できました。
自作ショートコードでブログカードを実装することは断念しましたが、その際に参考にさせてもらった記事がこちらです。↓
こちらで提供されているスクリプトをコピペするだけでブログカードが実装出来ます。
こちらを編集して新作記事を表示させるブログカードにしてもよかったんですが、時間がなかったんでプラグインをちょこっと弄るだけで出来る方法にしました。
ショートコードは今回初めて弄ってみましたが、簡単に色々な事が出来そうですね。
仕組みは投稿記事の中からパラメータをシステム側に送り、そのパラメータを使って処理した内容を最終的に記事に表示する。
使い勝手のいいショートコードを集めた記事などがありそうなので今度調べてみます。
以上「ショートコードで最新記事のブログカードを表示させる 第2弾」という記事でした。
気に入ってもらえたらシェアしてくれると嬉しいです。