ホーム > ブログ > CMSTips > WordPressでショートタグを作ってみた

WordPressでショートタグを作ってみた

2014.12.22

こんにちは、銀ねこです!

先日、WordPressで制作したとき、インポートで挙動を確認中固定ページに設定していたリンクがおかしくなってしまいました。原因は、ページのID番号が変わってしまったせい。

どうしたもんか考えた結果、ID番号がかわってもスラッグは変わらないので対策としてスラッグからURLを紐づけるショートタグを作って対処することにしました。

ショートタグの作り方

ショートタグは投稿でphpの代わりに使えるワードプレス専用のタグです。

変数や関数が使えるのでとっても便利です。WordPress多機能で結構目からウロコです!

たとえば、サイトのURLのショートタグを作りたいときのコードの書き方はこんな感じ。functions.phpに追記するだけです。

  1. function home_url(){
  2. $home = home_url();
  3. return $home;
  4. }
  5. add_shortcode('URL', 'home_url');

固定ページには以下のように記述すればよいだけ。

  1. <a href="[URL]">トップページ</a>

独自で作ったthemeの中ににimagesフォルダを設置し、そのイメージを使いたい時はこんな感じ。

  1. function imagePath(){
  2. $imagepath = bloginfo('template_url').'/images';
  3. return $imagepath;
  4. }
  5. add_shortcode('images', 'imagePath');
  1. <img src="[images]/ginneko.gif" alt="銀ねこ"/>

スラッグからURLを引き出す

今回ローカルでWordPressのカスタムURLが使えなかったのと、そういう事例を多々見かけたのでその対策として、URLがカスタムでもデフォルトでも対応できるようにしたかったというのもあったのですが、どちらにしても指定したページにリンクが飛ぶように設定する必要がありました。

ショートタグを利用すれば引数も使えるんですって。

あらヤダ奥さん。

引数にスラッグを入れてURLを設定すればいいやん!

ということで、リンク先が固定ページだったので下記の通りfunctions.phpに追記。

  1. function srug($atts){
  2. extract(shortcode_atts(array(
  3. 'srug' => ''
  4. ),$atts));
  5. $page = get_page_by_path($srug);
  6. $p_slugLink = get_permalink( $page->ID );
  7. return $p_slugLink;
  8. }
  9. add_shortcode('srugURL', 'srug');

今回スラッグ名をformにしたので投稿するときは以下の通り記載すればOK。

  1. <a href="[srugURL srug=’form']">お問い合わせページ</a>

ただしリンク先が固定ページ用なので、もしアーカイブなど投稿記事用に変更したいときは以下のように書き換えが必要です。

  1. $cat = get_category_by_slug($srug);
  2. $cateLink = get_category_link( $cat->cat_ID );

まとめ

引数が存在しないときは、ホームのURL、リンク先カテゴリーがアーカイブ時はといった感じでうまいこと条件分岐すればもっと便利なでショートタグができそうですね!

今度まとめてみよう~。

この記事のタグ