WordPress3 PHP&CMS初心者のはじめてのカスタマイズ -7ページ目

[WordPress3] 投稿内にある画像へのパスをショートコードに置き換える

WordPressをマルチサイトからシングルサイトに引越する前に、
はたと思った疑問ですが、
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');



初心者なので、こんなもんいらないよーっていうコードがあったら教えてください。