簡単なショートコードを作ってみる

実際にサンプルコードを動作させながらWordPressショートコードの作り方を確認してみました。

下記サイトを参考にしました。
http://wp.smashingmagazine.com/2009/02/02/mastering-wordpress-shortcodes/
 
(1)”こんにちは!”を表示するショートコード
(2)リンクを生成するショートコード
(3)ツイッターに記事のURLを送信するショートコード
 

(1)”こんにちは!”を表示するショートコード


 
ショートーコードの作り方を学ぶために投稿内にただ単に”こんにちは!”を表示するショートコードをつくってみます。
 
1)functions.phpにショートコードを定義

function hello() {
  return 'こんにちは!';
}
add_shortcode('hl', 'hello');

●サンプルコードの説明
 
・add_shortcode()関数を使って、hello()関数をショートコードとして登録します。hello()関数の下に下記記述を追加します。
 
・書式
add_shortcode( $tag , $func );
 $tag
  記事の本文でこのショートコード実行するのに指定するタグ
 $func
  上記タグが見つかった場合に実行される関数
 
2)投稿本文にショートコードのタグを記述
 
下記の書式でショートコードのタグを記述します。
[hl]
 
3)表示確認
 
ブラウザで投稿を表示し、ショートコードのタグを記述した部分が”こんにちは!”と表示される事を確認
 
 

(2)リンクを生成するショートコード


 
属性や引数を指定してリンクを生成するショートコード作成してみます。
 
[url 引数1]引数2[/url]の形で使用するショートコードを作成します。
 
下記のように使用します。
 
ショートコードのタグ
[url href=”http://www.example.com”]ショートコードの例[/url]
 
出力結果
<a href=”http://www.example.com”>ショートコードの例</a>
 
●作成方法
 
functions.phpに下記コードを記述します。

function myUrl($atts, $content = null) {
  extract(shortcode_atts(array("href" => 'http://'), $atts));
  return '<a href="'.$href.'">'.$content.'</a>';
}

add_shortcode("url", "myUrl");

●コードの説明
 
・shortcode_atts( $defaults_array, $atts );
 
ショートコードの無効な属性値を除外し、属性とその値を格納した連想配列を返します。

引数
 $defaults_array:認識される属性名とそのデフォルト値を指定する連想配列
 $atts:ショートコードハンドラに渡される生の属性配列

 
上記例では、属性名がa要素のhref属性でデフォルト値が’http://’としています。
 
$attsがショートコードの一番目の引数に指定する文字列で、上記例では、”href=”http://www.example.com”です。
 
引数1に”href”という属性値が指定されている場合はそこで指定された値が使用され、hrefが指定されていない場合は、デフォルト値を使用します。a要素には指定出来る属性が決まっていますが、shortcode_atts()使用する事によって、入力ミスをしてhref以外の文字を入力してしまった場合は除去してデフォルト値にしてくれるので安全に使用できます。
 
・extract()
 
array(“href” => ‘http://www.example.com’, “name” => ‘名前’)といった連想配列を$href, $name などの属性キーの名前のローカル変数を作成します。
$href = “http://www.example.com”
$name = “名前”
 
・ショートコードの第二引数はa要素の外で使用される文字列なので入力値をそのまま出力しています。
 
 

(3)ツイッターに記事のURLを送信するショートコード


 
WordPressの記事内のリンクをクリックするとツイッターに下記のようなメッセージを送るショートコードを作成します
 
今この記事を読んでいます。[その記事のURL]
 
1)ショートコードを作成
 
functions.phpに下記コードを登録

function twitt() {
  return '<div id="twitit"><a href="http://twitter.com/intent/tweet?text=今この記事を読んでいます。 '.get_permalink($post->ID).'" title="クリックするとこの記事をツイッターに送信" target="_blank">ツイッターに共有</a></div>';
}

add_shortcode('twitter', 'twitt');

2)動作確認
 
①WordPressの記事内に[twitter]を記述
 
②ブラウザで記事を表示し、”ツイッターに共有”のリンク押下
 
③ツイッターに”今この記事を読んでいます。[その記事のURL]”のメッセージが送られます。

関連記事の目次
VPSサーバーでスナップショットを取得
~障害に備え、リカバリーポイントを作成。
VPSサーバーにログインして、設定内容を確認
~グローバルIPアドレス確認、SSHキーを作成。
VPSサーバーにSSHでログイン
~Tera Term、SSH、公開鍵認証方式
yumコマンドで最新のパッケージにアップデート
~全パッケージを最新にアップデート
Apacheのインストール
~yumコマンドでApacheインストール、iptablesでファイアウォールの設定
PHPとMySQLをインストール
~yumコマンドでPHP、MySQLインストール
WinSCPを使ってWordPressをアップロード
~WinSCPをクライアントPCにインストール、ファイルアップロード方法
WordPressをインストール
~MySQLでWordPress用データベース作成、wp-config.phpファイルの設定
CentOSのファイアウォール設定
~iptablesを使ってネットワークフィルタリング設定を一から行う
OpenSSHの設定をよりセキュアに
~ログイン制限、ポート変更、認証方式
ApacheでTCPのTraceメソッドを無効にする
~Apacheの設定変更、Telnetで動作確認
ヘッダーにApacheバージョンが表示されないようにする
~Apacheの設定変更、Telnetで動作確認
Apacheでディレクトリ内一覧表示を無効にする
~autoindex_moduleのロードを無効にする
セキュリティを考慮し、MySQLの匿名ユーザーにパスワードを設定、または削除
~MySQLの匿名ユーザーにパスワードを設定、または削除
PHPのバージョンが表示されないようにする
~php.iniの設定変更
WordPressディレクトリのパーミッションをセキュアに
~WordPress用ディレクトリの所有グループ、ユーザー、パーミッション設定
パーマリンク設定時のApache設定
~WordPressパーマリンクの設定、Apache .htaccessの設定
WordPressテーマの選定
~テーマ追加の特徴フィルターの項目、テンプレートキング
WordPressで画像のアップロード、サイズ調整、リンクを設定
~アップロード画像の画像サイズ、サムネイル、画像編集、リンク設定
更新可能なRPMパッケージのリストをメールで送信する
~yumコマンド、Bashスクリプト、Cron
Linuxでディスク使用量が多いディレクトリを調べる方法(1)
~du --max-depth
Linuxでディスク使用量が多いディレクトリを調べる方法(2)
~duコマンド、sortコマンド
WordPressデータベースのバックアップとリストア
~コマンドラインでバックアップ、リストア
WordPressのバージョンアップと旧バージョンへの戻し
~データベースとディレクトリのバックアップ、リストア
BashスクリプトでWordPressデータベースを自動バックアップ
~MySQLデータベースをBash、Cronを使って自動バックアップ、メール通知
BashスクリプトでDos攻撃など大量アクセスのログを検知
~Apacheアクセスログ、Dos、Cron、メール通知
テーマ作成
 
ブートストラップ3を使って自作テーマ作成
~Bootstrap3、自作テーマ作成、TwentyFourteen
Bootstrapのフリーのテーマを使ってデザインを簡単にカスタマイズ
~Bootstrap3のスタイルをカスタマイズ
 
WordPresssショートコード
 
簡単なショートコードを作ってみる
~ショートコードの作り方
ショートコードを使って関連記事のリンクを自動で挿入
~ショートコードの簡単なサンプル
ショートコードを使ってディレクトリ内のファイル名を取得し、投稿内にリンクを挿入
~カスタムフィールド利用、PHPで日本語文字列検索などのコーディング
 
AJAX、AngularJSなどその他応用
 
WordPress投稿内でAngularJSを使用
~AngularJS、Bootstrap、アコーディオン
Bootstrap3で作成したナビゲーションメニューをAngularJSに変更
~AngularJS、Bootstrap、自作テーマheder.php
WordPressでAngularJSを使ったGoogleマップを使えるようにする
~AngularJSを使って投稿内にGoogleマップ

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です