[WordPress3] 投稿内にある画像へのパスをショートコードに置き換える
WordPressをマルチサイトからシングルサイトに引越する前に、
はたと思った疑問ですが、
WordPressだと投稿内に配置した画像のパスって、
絶対パスで指定されてますよね?
これ引越したら一体どうなるんだろう・・と、
嫌な予感がしたので、調べてみたら、
なにやら引越した後に、ドメインなんかを一斉に置換するらしい。
んー、
でも引越したら、
ウィジェットとかちゃんと移行されなかったし、
DBに入ってないものとか抜けがありそうだなーと思い、
全てのパスをショートコードで代替することにしました。
ショートコードをご存じない方に、
ものすごくざっくりした説明をすると、
マクロのような、クラスのようなものを自分で作るようなかんじです。
詳しく知りたい方は、Googleで調べてください。
ショートコードはfunction.phpに書く関数なので、
もちろん他のphpファイルからも参照できますが、
ウィジェットからはそのままでは使用できないので、
事前に以下のコードの追加が必要です。
■ウィジェット内でショートコードを使えるようにする
add_filter('widget_text', 'do_shortcode');
かちびとにも書いてありましたが、
ショートコードはfunction.phpに書いて、
AddQuicktagプラグインで登録しておくと、
クライアントにも気軽につかってもらえて便利です。
んで、私がとりあえず追加してみたショートコードは以下の通り。
■画像へのパス
■サイトルートへのパス
※追記!!
サイトのルートパスは↓でも取得できます!
■指定したカテゴリの最新記事を指定した記事数だけ表示する
初心者なので、こんなもんいらないよーっていうコードがあったら教えてください。
■今回の参考サイト
はたと思った疑問ですが、
WordPressだと投稿内に配置した画像のパスって、
絶対パスで指定されてますよね?
これ引越したら一体どうなるんだろう・・と、
嫌な予感がしたので、調べてみたら、
なにやら引越した後に、ドメインなんかを一斉に置換するらしい。
んー、
でも引越したら、
ウィジェットとかちゃんと移行されなかったし、
DBに入ってないものとか抜けがありそうだなーと思い、
全てのパスをショートコードで代替することにしました。
ショートコードをご存じない方に、
ものすごくざっくりした説明をすると、
マクロのような、クラスのようなものを自分で作るようなかんじです。
詳しく知りたい方は、Googleで調べてください。
ショートコードはfunction.phpに書く関数なので、
もちろん他のphpファイルからも参照できますが、
ウィジェットからはそのままでは使用できないので、
事前に以下のコードの追加が必要です。
■ウィジェット内でショートコードを使えるようにする
add_filter('widget_text', 'do_shortcode');
かちびとにも書いてありましたが、
ショートコードはfunction.phpに書いて、
AddQuicktagプラグインで登録しておくと、
クライアントにも気軽につかってもらえて便利です。
んで、私がとりあえず追加してみたショートコードは以下の通り。
■画像へのパス
function getImagesPath() {
$images_path = get_bloginfo('url')."/wp-content/uploads/";
return $images_path;
}
add_shortcode('imgpath', 'getImagesPath');
■サイトルートへのパス
function getHomePath() {
$home_path = get_bloginfo('url')."/";
return $home_path;
}
add_shortcode('homepath', 'getHomePath');
※追記!!
サイトのルートパスは↓でも取得できます!
- home_url()
- get_home_url()
- site_url()
- get_site_url()
■指定したカテゴリの最新記事を指定した記事数だけ表示する
function getLatestCategory($atts, $content = null) {
extract(shortcode_atts(array(
"num" => '5',
"slg" => ''
), $atts));
global $post;
$cats = get_category_by_slug($slg);
$cat = $cats->term_id;
$myposts = get_posts('numberposts='.$num.'&order=DESC&orderby=post_date&category='.$cat);
$retour = '<ul class="news">';
foreach($myposts as $post) :
setup_postdata($post);
$mycat = get_the_category();
$catname = $mycat[0] -> cat_name; /* カテゴリ名取得 */
$catslug = $mycat[0] -> slug; /* スラッグ取得 */
/* カテゴリ名に応じて語尾を変える */
if( $catslug == 'ex' ){
$afterWord = 'を追加しました';
}elseif( $catslug == 'art'){
$afterWord = 'を紹介中です';
}elseif( $catslug == 'media' ){
$afterWord = 'に紹介されました';
}else{
}
$retour.='<li>'.get_the_date().'<a href="'.get_permalink().'"><span>['.$catname.']</span> '.the_title("","",false).$afterWord.'</a></li>';
endforeach;
$retour.='</ul> ';
wp_reset_query();
return $retour;
}
add_shortcode('getlatest','getLatestCategory');
初心者なので、こんなもんいらないよーっていうコードがあったら教えてください。
■今回の参考サイト
- wordpressでテンプレートフォルダのパスをショートコードに登録するぜ完全版
- お手軽WordPress Tips:コンテンツをサクッと表示させるショートコードを作る & 超絶便利プラグインAddQuicktag
- 自作したショートコードをビジュアルエディタ内で置換する
- 22のWordPress カスタマイズ ハック