WordPressショートコードを作ってみる:第二回

【第二回】WordPressの機能を追加するものにショートコードがありますが今回はこのショートコードの作り方を解説します。

【まとめ】

WordPressの記事はwp_postsにあり、

post_typeがpostまたはrevisionのものが対象である。

wp_postsを読むにはMySqlへログインする必要があるが、

global $wpdb;
//だけでログインできてしまうという超簡単仕様。

以上を踏まえてショートコードを書いてみます。

//関数名はpostCountで引数も渡せますので渡せるようにします。
//[POSTCOUNT posts post_content post revision]
//という感じで引数がない場合も作っておきます
function postCount($target){//引数はarrayで受け取る
    if(count($target)==4){//引数が4送られたら
        $table_name= $target[0];
        $count_row = $target[1];
        $target1   = $target[2];
        $target2   = $target[3];
    }else{//4以外ならデフォルト
        $table_name= "posts";
        $count_row = "post_content";
        $target1   = "post";
        $target2   = "revision";
    }
    //DBに接続;インスタンスを呼ぶ
    global $wpdb;
    //tableをSELECT
    $countrow=$wpdb->get_results( "SELECT $count_row FROM $table_name WHERE post_type='$target1' OR post_type='$target2' ",OBJECT);
    //$countrowをカウントしていくつあるか
    return "現在、記事は".count($countrow)."件あります。";
}
add_shortcode('POSTCOUNT','postCount');
//ページに書くコード[POSTCOUT]呼ぶfunctionはpostCount

という感じで追記してみると記事数が得られます。

ヒント!)SELECT $count_row FROM $table_name WHERE post_type=’$target1′ OR post_type=’$target2’はsql命令文です。post_type=’$target1’の変数を”で囲っているのは’’内がstringであるからです。

新しい投稿ページに以下を書き込みます。

[POSTCOUNT wp_posts post_content post revision]

すると以下のように表示されます。

現在、記事は151件あります。

コメントを残す

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