WordPressでは様々な関数がデフォルトで用意されています。
ただ、数が多すぎて、WordPressではどんな関数がデフォルトで用意されていて、どこまでのことができるのか把握することが難しいですよね。
そこで、今回はWordPress案件でよく使う便利な関数をまとめてみました。
なお、ターム情報・カスタム投稿を取得する際に使用する関数については下記の記事で詳しく紹介していますので、今回は割愛いたします。
【WordPress】ターム情報・カスタム投稿情報を取得する方法
ページ判定系関数
まずはページごとに処理を分けたいときによく使う関数を紹介します。
is_front_page() - フロントページ判定
is_front_page()は、現在表示しているページがフロントページかどうかを判定する関数です。
引数はなく、フロントページのときはtrue、そうではないときはfalseが戻り値として返されます。
▼使用例
1 2 3 4 5 | <?php if( is_front_page() ): ?> // フロントページのときの処理を書く <?php endif; ?> |
is_page( $page ) - 固定ページ判定
is_page( $page )は、現在表示しているページが引数に指定した固定ページと一致するかを判定する関数です。
引数($page)には、固定ページのID、スラッグ、タイトルを指定することができ、下記のように配列にすることで複数指定することもできます。
1 2 3 | is_page( array( 132, 'page_slug', 'ページのタイトル' ) ) |
引数に指定した固定ページと一致する場合にはtrue、そうではない場合はfalseが戻り値として返されます。
▼使用例
1 2 3 4 5 | <?php if( is_page( 'company' ) ): ?> // 'company'というスラッグの固定ページのときの処理を書く <?php endif; ?> |
get_post_type( $post ) - 投稿タイプの取得
get_post_type( $post )は、現在のページの投稿タイプ、または指定した投稿の投稿タイプを取得する関数です。
引数($post)には投稿ID、または投稿オブジェクトを指定します。
何も指定しなかった場合には、現在のページの投稿が指定されます。
対象の投稿の投稿タイプが取得できた場合にはその投稿タイプ名、取得できなかった場合にはfalseが戻り値として返されます。
▼使用例
1 2 3 4 5 | <?php if( get_post_type( $post ) == 'news' ): ?> // 'news'というカスタム投稿タイプのときの処理を書く <?php endif; ?> |
is_post_type_archive( $post_type ) - 一覧ページ判定
is_post_type_archive( $post_type )は、現在表示しているページが引数に指定した投稿タイプの一覧ページかどうかを判定する関数です。
引数($post_type)には、投稿タイプを指定します。
is_page( $page ) - 固定ページ判定と同じように引数を配列にすることで投稿タイプを複数指定することもできます。
引数に指定した投稿タイプの一覧ページの場合にはtrue、そうではない場合はfalseが戻り値として返されます。
▼使用例
1 2 3 4 5 | <?php if( is_post_type_archive( 'news' ) ): ?> // 'news'というカスタム投稿タイプの一覧ページのときの処理を書く <?php endif; ?> |
is_singular( $post_type ) - 詳細ページ判定
is_singular( $post_type )は、現在表示しているページが引数に指定した投稿タイプの詳細ページかどうかを判定する関数です。
引数($post_type)には、投稿タイプを指定します。
is_page( $page ) - 固定ページ判定と同じように引数を配列にすることで投稿タイプを複数指定することもできます。
引数に指定した投稿タイプの一覧ページの場合にはtrue、そうではない場合はfalseが戻り値として返されます。
▼使用例
1 2 3 4 5 | <?php if( is_singular( 'news' ) ): ?> // 'news'というカスタム投稿タイプの詳細ページのときの処理を書く <?php endif; ?> |
is_tax( $taxonomy, $term ) - タクソノミー一覧ページ判定
is_tax( $taxonomy, $term )は、現在表示しているページが引数に指定した値と一致するタクソノミー一覧ページかどうかを判定する関数です。
引数は次の通りで、is_page( $page ) - 固定ページ判定と同じようにそれぞれの引数を配列にすることで複数指定することもできます。
引数 | 説明 | 指定する値 | 初期値 |
---|---|---|---|
$taxonomy | タクソノミーを指定 | タクソノミーのスラッグ | なし |
$term | タームを指定 | タームのID、スラッグ、または名前 | なし |
引数に指定したタクソノミー一覧ページの場合にはtrue、そうではない場合はfalseが戻り値として返されます。
▼使用例
下記のようにタクソノミー一覧ページかどうかや、特定のタクソノミー一覧ページかどうか、さらには特定のタクソノミーのターム一覧ページかどうかまで判定することができます。
1 2 3 4 5 6 7 8 9 10 11 12 13 | if( is_tax() ){ //タクソノミー一覧ページのとき } if( is_tax( 'tax_news' ) ){ //'tax_news'というタクソノミー一覧ページのとき } if( is_tax( 'tax_news', 'info' ) ){ //'tax_news'というタクソノミー一覧の'info'というタームページのとき } |
取得・読み込み系関数
次に、取得や読み込みの際によく使う関数を紹介します。
wp_title( $separater, $print, $position ) - ページのタイトルを取得
wp_title( $separater, $print, $position )は、現在のページのタイトルを取得する関数です。
引数は次の通りです。
引数 | 説明 | 指定する値 | 初期値 |
---|---|---|---|
$separater | 区切り文字を指定 | 区切り文字 | ‘»’ (») |
タイトルを出力するか、文字列として返すか | true / false | true | |
$position | 区切り文字を左右どちらに出力するか | ‘right’ (右) / ” (左) | ” |
この関数は現在のページが親子関係にあるとき、親のページのタイトルも一緒に出力します。
そのため、現在のページタイトルだけ出力したい、という場合には下記のコードで対応できます。
1 2 3 4 5 | $page_title = wp_title('|', false); //ページタイトルを取得 $page_title_array = explode('|', $page_title); //ページタイトルを「|」ごとに分けた配列に変換 print $page_title_array[ count($page_title_array) - 1 ]; //配列の最後を出力 |
こちらのコードを説明すると、
まず、2行目で「|」区切りのページタイトルを取得します。すると、ページタイトルは「| <親ページ> | <現在のページ>」のようになり、現在のページは「|」区切りで考えると一番最後にあります。
そのため、3行目で取得したページタイトルを「|」区切り文字ごとに分けた配列に変換し、4行目で最後の要素番号を指定することで出力しています。
get_theme_file_uri( $path ) - テーマフォルダまでのURLを取得
get_theme_file_uri( $path )は、テーマフォルダまでのURLを返す関数です。
引数($path)にテーマフォルダ内にあるフォルダ、またはファイルまでの相対パスを指定することでそのファイルまでのURLを取得できます。
▼使用例
例えば、上の画像のようにテーマフォルダ内の /img/common/logo.svg までのURLを取得したい場合、下記のように記述します。
1 2 3 | get_theme_file_uri( '/img/common/logo.svg' ); |
home_url( $path ) - トップページまでのURLを取得
home_url( $path )は、トップページまでのURLを返す関数です。
引数($path)に特定のページまでの相対パスを指定することでそのページまでのURLを取得できます。
▼使用例
例えば、下記のように記述すると、contactというページまでのURLを取得できます。
1 2 3 | home_url( '/contact/' ); |
get_header( $name ) - ヘッダーの読み込み
get_header( $name )は、ヘッダーを読み込む関数です。
引数($name)に名前を指定すると一致するヘッダーファイルが読み込まれ、存在しない場合にはデフォルトのヘッダーファイルが読み込まれます。
日本語版と英語版でヘッダーを分けたいときなどに使用します。
▼使用例
例えば、下記のように記述すると、「header-en.php」というファイルが読み込まれます。
1 2 3 | get_header( 'en' ); |
get_template_part( $slug, $name ) - テンプレートパーツの読み込み
get_template_part( $slug, $name )は、テンプレートパーツを読み込む関数です。
引数は次の通りです。
引数 | 説明 | 指定する値 | 初期値 |
---|---|---|---|
$slug | 読み込むテンプレートパーツがあるスラッグを指定 | テンプレートパーツがあるスラッグ | なし |
$name | テンプレートパーツの名前を指定 | テンプレートパーツの名前 | なし |
引数に指定した名前のテンプレートパーツが存在しない場合、何も読み込まれません。
get_query_var( $var, $default ) - クエリ変数の取得
get_query_var($var, $default)は、WP_Queryにセットされているクエリ変数を取得する関数です。
引数は次の通りです。
引数 | 説明 | 指定する値 | 初期値 |
---|---|---|---|
$var | 取得するキーを指定 | キー | なし |
$default | 値がないときに返すデフォルト値 | 値 | ” |
指定したキーの値が取得できた場合はその値を、取得できなかった場合には$defaultの値が設定されていたらその値、設定されていなかった場合には”が戻り値として返されます。
下記のように一覧ページでページ送り機能を実装する際によく使用します。
1 2 3 4 5 6 7 8 | $args = array( 'post_type' => array('news'), 'post_status' => 'publish', 'posts_per_page' => 10, 'paged' => get_query_var('paged'), ); |
ユーザーの状態判定用関数
次に、ユーザーの状態を判定する際によく使う関数です。
is_user_logged_in() - ログイン判定
is_user_logged_in()は、ユーザーがWordPressでログインしているかを判定する関数です。
引数はなく、ログインをしている場合はtrue、そうではないときはfalseが戻り値として返されます。
▼使用例
1 2 3 4 5 | <?php if( is_user_logged_in() ): ?> // ユーザーがログインしているときの処理を書く <?php endif; ?> |
current_user_can( $capability ) - 権限判定
current_user_can( $capability )は、ユーザーが引数に設定した権限を持っている、または引数に設定した権限をもつグループに属しているかを判定する関数です。
引数には権限、または権限のグループ名を指定し、ユーザーが引数に設定した権限を持っている、または引数に設定した権限をもつグループに属している場合にはtrue、そうではないときはfalseが戻り値として返されます。
▼使用例
1 2 3 4 5 | <?php if( current_user_can( 'administrator' ) ): ?> // ユーザーが'administrator'のときの処理を書く <?php endif; ?> |
wp_is_mobile() - モバイル判定
wp_is_mobile()は、現在使用している端末がスマホかどうかを判定する関数です。
引数はなく、現在の端末がスマホの場合にはtrue、そうではない場合はfalseが戻り値として返されます。
なお、この関数はユーザーエージェントに基づいて判定されておりますが、タブレットもスマホとして判定されますので注意が必要です。
▼使用例
1 2 3 4 5 | <?php if( wp_is_mobile() ): ?> // モバイルのときの処理を書く <?php endif; ?> |
まとめ
ということで、今回はWordPress案件でよく使う便利な関数をまとめてみました。
いかがだったでしょうか。
今回紹介した関数は用意されている関数のごく一部ですが、とても便利な関数ですのでぜひ使用してみてください。
なお、今回紹介した関数は今後のバージョンアップで非推奨となる可能性があります。
そのため、関数を使用する前には関数のリファレンスを確認することをおすすめします。
以上、最後までご覧いただきありがとうございました。