定期的にファイルをサーバーにアップロードして、そのファイルに対するリンクを投稿内に追記しているのですが、変更する記事の数が何十個もあって作業が面倒なので、ショートコードを使って自動化してみました。
※目次をクリックすると目次の下部にコンテンツが表示されます。
タイトル 投稿内のカスタムフィールド
東京都の地域情報 県名:東京都
神奈川県の地域情報 県名:神奈川県
: :
②サーバーのディレクトリとファイル名の仕様
ディレクトリ
wp-content/uploads/table/東京都
ファイル名
20131211東京都.html
20140410東京都.html
20140111東京都.html
:
③ショートコードの仕様
各投稿のカスタムフィールドで定義された値(例:東京都)のディレクトリ内のファイル名を取得し、そのファイルに対するリンクをその投稿内に挿入する。
テーマ内のfunctions.phpに下記ショートコードを定義します。
function ctm_fld() { mb_regex_encoding("UTF-8"); $ctm_fld = get_post_meta(get_the_ID() , '県名' ,true); $path = "wp-content/uploads/table/".$ctm_fld; $ary = array(); if ($handle = opendir($path)) { while (false !== ($file = readdir($handle))) { if (mb_ereg_match(".*$ctm_fld.*",$file)) { $day = substr($file, 0, 8); array_push($ary, array('day' => $day, 'file' => $file)); } } closedir($handle); foreach($ary as $key => $row){ $day_ary[$key] = $row['day']; } array_multisort($day_ary,SORT_ASC,SORT_NUMERIC,$ary); } foreach($ary as $key => $row){ $file_list .= "<a href=\"".$path."/".$row['file']."\" target=\"chart\">・".substr($row['file'],0,4)."年".substr($row['file'],4,2)."月末</a> "; } return $file_list; } add_shortcode('CtmFld', 'ctm_fld');
2)ショートコードの説明
①投稿内のカスタムフィールドで設定された値を取得
“県名”というカスタムフィールドで指定された値を取得します。
下記関数を使用します。
$ctm_fld = get_post_meta(get_the_ID() , ‘県名’ ,true);
②日本語の文字列検索
文字コードとしてUTF-8を指定し、ファイル名に指定した県名を含むファイルを抽出します。
mb_regex_encoding(“UTF-8”);
$ctm_fld = get_post_meta(get_the_ID() , ‘県名’ ,true);
:
if (mb_ereg_match(“.*$ctm_fld.*”,$file)) {
③ディレクトリ内のファイル一覧を取得
$path = “wp-content/uploads/table/”.$ctm_fld;
:
if ($handle = opendir($path)) {
while (false !== ($file = readdir($handle))) {
:
④substr関数でファイル名から日付部分を抽出
$day = substr($file, 0, 8);
⑤日付とファイル名を項目名としてハッシュの配列を作成
array_push($ary, array(‘day’ => $day, ‘file’ => $file));
⑥上記配列をarray_multisort関数を使って日付の順に並び替え
foreach($ary as $key => $row){
$day_ary[$key] = $row[‘day’];
}
array_multisort($day_ary,SORT_ASC,SORT_NUMERIC,$ary);
⑦配列内のファイルに対するリンクを作成
下記仕様のリンクを作成します。
<a href=”wp-content/uploads/table/東京都/20130810東京都.html” target=”chart”>・2013年08月末</a> <a・・・
foreach($ary as $key => $row){
$file_list .= “<a href=\””.$path.”/”.$row[‘file’].”\” target=\”chart\”>・”.substr($row[‘file’],0,4).”年”.substr($row[‘file’],4,2).”月末</a> ”;
}
⑧ショートコードを定義
add_shortcode(‘CtmFld’, ‘ctm_fld’);
投稿内に[CtmFld]を記述すると、その記述した部分に該当するファイルのリンクが挿入されます。
- 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を使って自作テーマ作成
- (1)全体概要
- (2)ブートストラップのサンプルを使ってindex.phpを作成
- (3)header.php、sidebar.php、footer.php、index.phpのテンプレートファイル作成
- (4)JavaScriptインクルードの設定
- (5)投稿本文表示用のテンプレートファイルを作成
- (6)単一投稿用(single.php)のテンプレートファイル作成
- (7)固定ページ用(page.php)のテンプレートファイル作成
- (8)検索結果表示用(search.php)のテンプレートファイル作成
- (9)アーカイブ表示用(archive.php)のテンプレートファイル作成
- (10)カテゴリー表示用(category.php)のテンプレートファイル作成
- (11)WordPressのメニュー画面でナビゲーションメニューを設定
- (12)サイトタイトル、キャッチフレーズを表示できるようにheader.phpを修正
- (13)カスタムヘッダー画像を使えるようにheader.phpを修正
- (14)404.phpテンプレートファイルを作成
- (15)記事タイトル部分のCSS設定
- (16)記事メタデータ部分のCSS設定
- (17)記事本文部分のCSS設定
- (18)前後のページへのリンクのCSS設定
- (19)前後の投稿へのリンクのCSS設定
- (20)コメント投稿フォーム、コメント表示部のCSS設定
- (21)ウィジェット部のCSS設定
- (22)アーカイブページのCSS設定
- (23)画面を左右にスライドさせるボタンのCSS設定
- ~Bootstrap3、自作テーマ作成、TwentyFourteen
- Bootstrapのフリーのテーマを使ってデザインを簡単にカスタマイズ
- ~Bootstrap3のスタイルをカスタマイズ
- 簡単なショートコードを作ってみる
- ~ショートコードの作り方
- ショートコードを使って関連記事のリンクを自動で挿入
- ~ショートコードの簡単なサンプル
- ショートコードを使ってディレクトリ内のファイル名を取得し、投稿内にリンクを挿入
- ~カスタムフィールド利用、PHPで日本語文字列検索などのコーディング
- WordPress投稿内でAngularJSを使用
- ~AngularJS、Bootstrap、アコーディオン
- Bootstrap3で作成したナビゲーションメニューをAngularJSに変更
- ~AngularJS、Bootstrap、自作テーマheder.php
- WordPressでAngularJSを使ったGoogleマップを使えるようにする
- ~AngularJSを使って投稿内にGoogleマップ
WordPresssショートコード
AJAX、AngularJSなどその他応用
- Ruby on Rails(他サイト)
- ~構築、CMS、Bootstrap、AngularJS