僕がサイト構築する際に一番使用するCMSはwordpressです。

もともとブログサイト用としてのCMSですが、現在ではコーポレートサイト・ECサイト・ポータルサイト等様々な目的のサイト構築に使用されています。

僕自身触り始めた時点ではphpに関する知識が乏しかったため、google大先生に何回も何回も教えを乞いながら制作していました。

今回の記事ではphpの構文の書き方から、wordpressの関数の仕組みまで僕なりに解説していきたいと思います。

wordpressの仕組み!

wordpressは膨大なphpファイルによって構築されています。

phpにはユーザー定義関数という仕組みがあり,

function 関数名() {
    処理に必要なプログラム  
}

という書き方で関数名を指定して呼び出すだけで定義されている処理を呼び出すことができます。

例えば、wp_title() というページタイトルを呼び出すテンプレートタグはwp-includesフォルダ内のgeneral-template.phpというファイル内で定義されています。

function wp_title($sep = '»', $display = true, $seplocation = '') {
    global $wpdb, $wp_locale;//データベースと日付設定をグローバル化

    $m = get_query_var('m');
    $year = get_query_var('year');
    $monthnum = get_query_var('monthnum');
    $day = get_query_var('day');
    $search = get_query_var('s');
    $title = '';

    $t_sep = '%WP_TITILE_SEP%'; // Temporary separator, for accurate flipping, if necessary

    // 投稿の場合
    if ( is_single() || ( is_home() && !is_front_page() ) || ( is_page() && !is_front_page() ) ) {
        $title = single_post_title( '', false );
    }

    // カテゴリ・タグページの場合
    if ( is_category() || is_tag() ) {
        $title = single_term_title( '', false );
    }

    // 分類がある場合
    if ( is_tax() ) {
        $term = get_queried_object();
        $tax = get_taxonomy( $term->taxonomy );
        $title = single_term_title( $tax->labels->name . $t_sep, false );
    }

    // 投稿者ページの場合
    if ( is_author() ) {
        $author = get_queried_object();
        $title = $author->display_name;
    }

    // 投稿タイプアーカイブの場合
    if ( is_post_type_archive() )
        $title = post_type_archive_title( '', false );

    // 月別アーカイブの場合
    if ( is_archive() && !empty($m) ) {
        $my_year = substr($m, 0, 4);
        $my_month = $wp_locale->get_month(substr($m, 4, 2));
        $my_day = intval(substr($m, 6, 2));
        $title = $my_year . ( $my_month ? $t_sep . $my_month : '' ) . ( $my_day ? $t_sep . $my_day : '' );
    }

    // 年別アーカイブの場合
    if ( is_archive() && !empty($year) ) {
        $title = $year;
        if ( !empty($monthnum) )
            $title .= $t_sep . $wp_locale->get_month($monthnum);
        if ( !empty($day) )
            $title .= $t_sep . zeroise($day, 2);
    }

    // 検索ページの場合
    if ( is_search() ) {
        /* translators: 1: separator, 2: search phrase */
        $title = sprintf(__('Search Results %1$s %2$s'), $t_sep, strip_tags($search));
    }

    // 404ページの場合
    if ( is_404() ) {
        $title = __('Page not found');
    }
    $prefix = '';
    if ( !empty($title) )
        $prefix = " $sep ";
    // パンくずのセパレータと方向の位置を決定
    if ( 'right' == $seplocation ) { // sep on right, so reverse the order
        $title_array = explode( $t_sep, $title );
        $title_array = array_reverse( $title_array );
        $title = implode( " $sep ", $title_array ) . $prefix;
    } else {
        $title_array = explode( $t_sep, $title );
        $title = $prefix . implode( " $sep ", $title_array );
    }
    $title = apply_filters('wp_title', $title, $sep, $seplocation);
    // 出力
    if ( $display )
        echo $title;
    else
        return $title;

}

このようにwp_title()というテンプレートタグが上記の処理を呼び出す役目をしているわけですね。

処理の内容は理解できなくてもこういう仕組みなんだなーということだけでも頭の片隅に置いといてください。

テンプレートタグ?条件分岐タグ?インクルードタグ??そもそもタグってなんだ?!

wordpressを構築する際に様々なサイトを訪問すると思いますが、必ずと言っていいほどこの言葉が出てくると思います。

タグとは簡潔にいうとwordpressの関数です。wp_title()のような処理の集合体のことですね。

wordpressには膨大な数の関数が定義されており、ユーザーはそれを簡単にコピペで使うことができるのです。(す、すごい)
関数のことを説明する際、便宜上いくつかの種類に分けて説明します。それが、テンプレートタグや条件分岐タグです。

  • テンプレートタグ
    テンプレートタグはその名の通り、テンプレートファイル内で使用するタグのことです。
    wordpress テンプレートタグ一覧
  • 条件分岐タグ
    条件分岐タグは、テンプレートファイル内で表示される内容や、特定のページ内容を表示する条件を設定するのに使います。
    条件分岐タグ – WordPress Codex 日本語版一覧

    このタグこそ初心者から中級者へのかべ!(ドドーン)。このタグを使いこなせば、構築できるサイトの質もターンと広がります。
  • その他wordpressで定義されている関数
    wordpressには上記のもの以外でもたくさんの関数が定義されています。たとえば[php][/php/]


    この関数(タグ)はデータベースから登録されているユーザーのメタデータを取得するものです。
    これ単体では何の表示もできませんが、
    [php]
    user_login . “n”);
    echo(‘ユーザーレベル: ‘ . $user_info->user_level . “n”);
    echo(‘ユーザーID: ‘ . $user_info->ID . “n”);
    ?>
    [/php]
    上記のソースを書くことによって各ユーザーデータを表示できます。
    この関数自体は調べればすぐ出てきますが、大事なのはどうプログラムを組み立てるか。です。
    関数リファレンス – WordPress Codex 日本語版

    では、次項でphpの書き方について説明します。

基礎の基礎!引数(パラメーター)の渡し方

タグ(関数)には「引数を指定しないでも作動するもの」と「必ず引数を指定しなければいけないもの」、または「指定することでその条件に合った動きをさせる」があります。この引数とは、関数の()内のことです。
[php][/php]
を使って説明すると、(‘url’)の部分が引数となり、サイトのurlを呼び出します。この部分を(‘template_url’)とするとテンプレートファイルのurlが呼び出されるようになります。
このように同じ関数でも因数によっておこる動作は違います。この関数はほかにどんな引数があるの?と疑問に思ったときは
WordPress Codex 日本語版

で確認するのがベターです。

上記の関数は一つの引数ですのでシングルクォート(’)で引数を囲めばいいだけなのですが、
複数の引数を指定する関数もあります。
また例を使って説明してみます。

[php] ‘, ‘

‘); ?> [/php]

the_date()は日時を呼び出すタグです。

出力結果は
[html]

2013-01-14

[/html]
となります。
書式として[php] [/php]
と記述してありますね。(書式はあくまでも書式なのでそのまま書くものではありませんのでご注意を)
the_date()には以下のパラメータがあります。

  • format (文字列)- 日時の出力形式。デフォルト値は管理画面のオプションで設定した形式。
  • before (文字列)- 投稿/更新日の直前に出力するコードやテキスト。デフォルト値は空。
  • after (文字列)- 投稿/更新日の直後に出力するコードやテキスト。デフォルト値は空。
  • echo (true/false)- 取得した値の処理方法。

         true(デフォルト。日付をページ内に出力)
         false(PHPで使用できる値として日付を返す)

またパラメーターにはデフォルト値が決まっているものと、必ず値を指定しなければならないものがあります。

the_dateではデフォルト値が設定されているのでthe_date()とカッコ内は未記入でも値を出力してくれます。

また、最初につまづきやすいのが( ) 内の書き方です。
これには大きくわけて3種類あります。

1.カンマで区切る

シングルクオートで囲んであるパラメーターの指定値をカンマで区切り値を渡す

パラメーター=パラメーターの指定値&パラメーター=パラメーターの指定値……..の書式でパラメーターを渡す

1shiharaT
1shiharaT
本名 : 石原隆志

2013年からWeb業界に身を置き、GrowGroup株式会社でWordPressやEC-CUBEなどのCMSを中心にWeb制作をやってます。

コメントを残す

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