WordPress ブログ全般の情報を取得・出力する関数
更新日:2022年03月13日
作成日:2019年01月18日
よく使う WordPress のブログ全般の情報を取得・出力する関数です。
bloginfo
サイトの情報を表示させる関数で、パラメータに指定された情報をブラウザに出力します。情報を出力せず、値を変数に代入するなど値を取得・利用する場合は get_bloginfo() を使います。
| キーワード | 説明 |
|---|---|
| name(初期値) | 管理画面「設定」→「一般」の「サイトのタイトル」を表示します。 |
| description | 管理画面「設定」→「一般」の「キャッチフレーズ」を表示します。 |
| admin_email | 管理画面「設定」→「一般」の「メールアドレス」を表示します。 |
| charset | 使用されている文字コードを表示します(Version 3.5.0 以降は "UTF-8" を常に返します)。 |
| version | 使用中の WordPress バージョンを表示します。 |
| html_type | HTML ページの Content-Type の値(デフォルトは "text/html") を表示します。 |
| language | WordPress の言語コード(en-US や ja など)を表示します。 |
| atom_url | Atom のアドレス(URL)を表示します。 |
| rss2_url | RSS(2.0) のアドレス(URL)を表示します。 |
| comments_atom_url | コメントの RSS(2.0) のアドレス(URL)を表示します。 |
| comments_rss2_url | コメントの Atom のアドレス(URL)を表示します。 |
| pingback_url | Pingback XML-RPC ファイルの URL (xmlrpc.php) を表示します。 |
<meta charset="<?php bloginfo( 'charset' ); ?>"> //以下は出力結果 <meta charset="UTF-8">
(ホームへのリンクを esc_url() と home_url() で出力)
<h1><a href="<?php echo esc_url( home_url( '/' ) ); ?>"><?php bloginfo( 'name' ); ?></a></h1>
get_bloginfo
パラメータ $show で指定されたサイトに関する情報を返します。パラメータに指定する文字列(キーワード)は bloginfo() と同じです。値をそのままブラウザに出力する場合は、bloginfo() を使用します。
get_bloginfo( $show, $filter )
- パラメータ
-
- $show(文字列):(オプション) 取得したい情報を指すキーワード(bloginfo()を参照)。初期値: 'name'
- $filter(文字列):(オプション) 取得した値に適用するフィルターを指定するキーワード。何も指定しない(初期値: 'raw')場合は、取得した値をそのまま返します。'display' を指定すると、取得した値を wptexturize() 関数へ渡してから(呼び出し元へ)返します。
- 戻り値
- 指定されたキーワードに対応する値(サイトの情報)の文字列(空文字の可能性もあります)。
- 利用可能箇所
- どこでも可能
サイトに関する情報の値を変数に代入したり、加工したりする場合に使用します。デフォルトでは取得する値はエスケープ処理されていないので注意が必要です。取得した値を出力する際は、第二引数に「display」を指定するか、エスケープ処理をします。
bloginfo() は適切にエスケープ処理されて出力されます。
<?php bloginfo('name'); ?>
get_bloginfo() を使って出力する場合は、エスケープ処理をするか、
<?php echo esc_html(get_bloginfo('name')); ?>
または、第二引数に「display」を指定して出力します。
<?php echo get_bloginfo('name', 'display'); ?>
bloginfo() は、以下のように get_bloginfo() の第二引数に「display」を指定したラッパー関数として「wp-includes/general-template.php」で定義されています。
<?php
function bloginfo( $show='' ) {
echo get_bloginfo( $show, 'display' );
}
以下は「設定」→「一般」の「キャッチフレーズ」が設定されていれば、その値を表示する例です。
<?php $my_description = get_bloginfo( 'description', 'display' ); if ( $my_description ) : ?> <p class="description"><?php echo $my_description; ?></p> <?php endif; ?>
以下は get_bloginfo() のソースです。
各種の値を get_option() などを使って取得しています。また $filter に display を指定した場合はフィルタを通した値を返しています(115行目)。
function get_bloginfo( $show = '', $filter = 'raw' ) {
switch ( $show ) {
case 'home': // DEPRECATED
case 'siteurl': // DEPRECATED
_deprecated_argument(
__FUNCTION__,
'2.2.0',
sprintf(
/* translators: 1: 'siteurl'/'home' argument, 2: bloginfo() function name, 3: 'url' argument */
__( 'The %1$s option is deprecated for the family of %2$s functions. Use the %3$s option instead.' ),
'<code>' . $show . '</code>',
'<code>bloginfo()</code>',
'<code>url</code>'
)
);
// Intentional fall-through to be handled by the 'url' case.
case 'url':
$output = home_url();
break;
case 'wpurl':
$output = site_url();
break;
case 'description':
$output = get_option( 'blogdescription' );
break;
case 'rdf_url':
$output = get_feed_link( 'rdf' );
break;
case 'rss_url':
$output = get_feed_link( 'rss' );
break;
case 'rss2_url':
$output = get_feed_link( 'rss2' );
break;
case 'atom_url':
$output = get_feed_link( 'atom' );
break;
case 'comments_atom_url':
$output = get_feed_link( 'comments_atom' );
break;
case 'comments_rss2_url':
$output = get_feed_link( 'comments_rss2' );
break;
case 'pingback_url':
$output = site_url( 'xmlrpc.php' );
break;
case 'stylesheet_url':
$output = get_stylesheet_uri();
break;
case 'stylesheet_directory':
$output = get_stylesheet_directory_uri();
break;
case 'template_directory':
case 'template_url':
$output = get_template_directory_uri();
break;
case 'admin_email':
$output = get_option( 'admin_email' );
break;
case 'charset':
$output = get_option( 'blog_charset' );
if ( '' == $output ) {
$output = 'UTF-8';
}
break;
case 'html_type':
$output = get_option( 'html_type' );
break;
case 'version':
global $wp_version;
$output = $wp_version;
break;
case 'language':
/* translators: Translate this to the correct language tag for your locale,
* see https://www.w3.org/International/articles/language-tags/ for reference.
* Do not translate into your own language.
*/
$output = __( 'html_lang_attribute' );
if ( 'html_lang_attribute' === $output || preg_match( '/[^a-zA-Z0-9-]/', $output ) ) {
$output = determine_locale();
$output = str_replace( '_', '-', $output );
}
break;
case 'text_direction':
_deprecated_argument(
__FUNCTION__,
'2.2.0',
sprintf(
/* translators: 1: 'text_direction' argument, 2: bloginfo() function name, 3: is_rtl() function name */
__( 'The %1$s option is deprecated for the family of %2$s functions. Use the %3$s function instead.' ),
'<code>' . $show . '</code>',
'<code>bloginfo()</code>',
'<code>is_rtl()</code>'
)
);
if ( function_exists( 'is_rtl' ) ) {
$output = is_rtl() ? 'rtl' : 'ltr';
} else {
$output = 'ltr';
}
break;
case 'name':
default:
$output = get_option( 'blogname' );
break;
}
$url = true;
if ( strpos( $show, 'url' ) === false &&
strpos( $show, 'directory' ) === false &&
strpos( $show, 'home' ) === false ) {
$url = false;
}
if ( 'display' == $filter ) {
if ( $url ) {
/**
* Filters the URL returned by get_bloginfo().
* @since 2.0.5
* @param mixed $output The URL returned by bloginfo().
* @param mixed $show Type of information requested.
*/
$output = apply_filters( 'bloginfo_url', $output, $show );
} else {
/**
* Filters the site information returned by get_bloginfo().
* @since 0.71
* @param mixed $output The requested non-URL site information.
* @param mixed $show Type of information requested.
*/
$output = apply_filters( 'bloginfo', $output, $show );
}
}
return $output;
}
get_option
options データベーステーブルから名前を指定してオプションの値(WordPress の設定値)を取得します。
オプションは WordPress が様々な設定や構成を保存するために使用するデータの集まりで WordPress をインストールするとデフォルトで作られる項目の一部です。
これらの項目には管理画面「設定」の各設定項目で指定した値などが含まれています。それぞれの項目に設定されている値は wp_load_alloptions() などを使って確認することができます。
get_option( $option, $default )
- パラメータ
-
- $option(文字列):(必須) 取得するオプションの名前。小文字のみ。
- $default(mixed):(オプション) データベースにオプションが存在しない場合のデフォルト値。初期値: false
- 戻り値
- パラメータ $option で指定されたオプションの値。$option で指定されたオプションが設定されていない場合は、パラメータ $default の値かまたは false(初期値)。(注意) WordPress のバージョンによってオプションは異なります。
- 利用可能箇所
- どこでも可能
| オプション名 | 説明 |
|---|---|
| siteurl(非推奨) | (Deprecated)WordPressのアドレス(管理画面「設定」-「一般設定」) |
| home | サイトのアドレス(ブログのアドレス)(管理画面「設定」-「一般設定」) |
| blogname | ブログタイトル(管理画面「設定」-「一般設定」) |
| blogdescription | キャッチフレーズ(管理画面「設定」-「一般設定」) |
| admin_email | メールアドレス(管理画面「設定」-「一般設定」) |
| posts_per_page | 1ページ内の投稿数(管理画面「設定」-「表示設定」) |
| posts_per_rss | RSS/Atomフィードで表示する最新の投稿数(管理画面「設定」-「表示設定」) |
| comments_per_page | 1ページ内のコメント数(管理画面「設定」-「ディスカッション設定」) |
| thread_comments | WordPress ネイティブのネストされたコメントを有効化するかどうか |
| date_format | 日付フォーマット(管理画面「設定」-「一般設定」) |
| time_format | 時刻フォーマット(管理画面「設定」-「一般設定」) |
| template | 現在のテーマの名前 |
| post_count | 投稿数 |
| show_on_front | ホームページの表示(管理画面「設定」-「表示設定」) |
| page_on_front | ホームページの表示>ホームページ(管理画面「設定」-「表示設定」) |
| page_for_posts | ホームページの表示>投稿ページ(管理画面「設定」-「表示設定」) |
| gmt_offset | タイムゾーン>UTCとの時差(管理画面「設定」-「一般設定」) |
| use_smilies | 「整形」顔文字を画像に変換して表示(管理画面「設定」-「投稿設定」) |
| thumbnail_size_w | 画像をアップロードする際に自動生成する「サムネイルのサイズ」の「幅」。デフォルト: 150(管理画面「設定」-「メディア」) |
| thumbnail_size_h | 画像をアップロードする際に自動生成する「サムネイルのサイズ」の「高さ」。デフォルト: 150(管理画面「設定」-「メディア」) |
| thumbnail_crop | サムネイルをトリミングするかどうか。1:トリミングする (デフォルト)。0:トリミングしない(管理画面「設定」-「メディア」) |
| medium_size_w | 画像をアップロードする際に自動生成する「中サイズ」の「幅」。デフォルト: 300(管理画面「設定」-「メディア」) |
| medium_size_h | 画像をアップロードする際に自動生成する「中サイズ」の「高さ」。デフォルト: 300(管理画面「設定」-「メディア」) |
| large_size_w | 画像をアップロードする際に自動生成する「大サイズ」の「幅」。デフォルト: 1024(管理画面「設定」-「メディア」) |
| large_size_h | 画像をアップロードする際に自動生成する「大サイズ」の「高さ」。デフォルト: 1024(管理画面「設定」-「メディア」) |
| medium_large_size_w | 画像をアップロードする際に自動生成する「medium_large サイズ(レスポンシブ画像)」の「幅」。デフォルト: 768(WordPress 4.4 から) |
オプションのリストは、オプション設定リファレンスにあります。また、インストールしたプラグインにより、多くのオプションが利用可能な場合があります。
- Codex: Option Reference
<?php //存在しないオプション名を指定(第二引数なし) $no_exists_value = get_option( 'no_exists_value' ); var_dump( $no_exists_value ); //真偽値 false が出力 //出力結果:bool(false) //存在しないオプション名を指定(第二引数に「default_value」と言うデフォルト値を指定) $no_exists_value = get_option( 'no_exists_value', 'default_value' ); var_dump( $no_exists_value ); //指定したデフォルト値「default_value」が出力 //出力結果:string(13) "default_value" ?>
以下は get_option() のソースです。
function get_option( $option, $default = false ) {
global $wpdb;
$option = trim( $option );
if ( empty( $option ) ) {
return false;
}
/**
* Filters the value of an existing option before it is retrieved.
*/
$pre = apply_filters( "pre_option_{$option}", false, $option, $default );
if ( false !== $pre ) {
return $pre;
}
if ( defined( 'WP_SETUP_CONFIG' ) ) {
return false;
}
// Distinguish between `false` as a default, and not passing one.
$passed_default = func_num_args() > 1;
if ( ! wp_installing() ) {
// prevent non-existent options from triggering multiple queries
$notoptions = wp_cache_get( 'notoptions', 'options' );
if ( isset( $notoptions[ $option ] ) ) {
/**
* Filters the default value for an option.
*/
return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
}
$alloptions = wp_load_alloptions();
if ( isset( $alloptions[ $option ] ) ) {
$value = $alloptions[ $option ];
} else {
$value = wp_cache_get( $option, 'options' );
if ( false === $value ) {
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
// Has to be get_row instead of get_var because of funkiness with 0, false, null values
if ( is_object( $row ) ) {
$value = $row->option_value;
wp_cache_add( $option, $value, 'options' );
} else { // option does not exist, so we must cache its non-existence
if ( ! is_array( $notoptions ) ) {
$notoptions = array();
}
$notoptions[ $option ] = true;
wp_cache_set( 'notoptions', $notoptions, 'options' );
/** This filter is documented in wp-includes/option.php */
return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
}
}
}
} else {
$suppress = $wpdb->suppress_errors();
$row = $wpdb->get_row( $wpdb->prepare( "SELECT option_value FROM $wpdb->options WHERE option_name = %s LIMIT 1", $option ) );
$wpdb->suppress_errors( $suppress );
if ( is_object( $row ) ) {
$value = $row->option_value;
} else {
/** This filter is documented in wp-includes/option.php */
return apply_filters( "default_option_{$option}", $default, $option, $passed_default );
}
}
// If home is not set use siteurl.
if ( 'home' == $option && '' == $value ) {
return get_option( 'siteurl' );
}
if ( in_array( $option, array( 'siteurl', 'home', 'category_base', 'tag_base' ) ) ) {
$value = untrailingslashit( $value );
}
/**
* Filters the value of an existing option.
*/
return apply_filters( "option_{$option}", maybe_unserialize( $value ), $option );
}
get_blog_option
マルチサイトで子ブログや親ブログなど特定のブログの情報を取得します。(WordPress がマルチサイトとしてインストールされている場合のみ)
get_blog_option( $blog_id, $option, $default )
- パラメータ
-
- $blog_id (int) :(必須)サイトのID(整数値)。マルチサイトの場合、追加されたサイトには追加順にIDが付与され、WordPressのインストールと同時に作成されたメインのサイトのIDは「1」で、追加されたサイトは順に「2」以降のIDが付与されます。
- $option (string):(必須)取得するオプションの名前。(get_option と同じ)
- $default (mixed) :(オプション)オプションが存在しない場合のデフォルト値。初期値: false
- 戻り値
- パラメータ $option で指定されたオプションの値。$option で指定されたオプションが設定されていない場合は、パラメータ $default の値かまたは false(初期値)。
//サイトID が「1」のサイトのタイトルを出力 <?php echo get_blog_option(1, 'blogname'); ?>
サイトID の取得方法
以下は変数 $mysiteid にサイトIDを格納する4つの例です(get_id_from_blogname 参照)。
$mysiteid = $GLOBALS["blog_id"]; global $blog_id; $mysiteid = $blog_id; global $wpdb; $mysiteid = $wpdb->blogid; global $current_blog; $mysiteid = $current_blog->blog_id;
get_id_from_blogname
サイトのスラッグ名からサイトの ID を取得します。(マルチサイト用)
get_id_from_blogname( $slug )
- パラメータ
- $slug(string):スラッグ名(サブドメイン名またはディレクトリ名)
- 戻り値
- サイトID(int→文字列?)
- 利用可能箇所
以下は、get_permalink() でそのページの URL を取得して、PHP の basename() でスラッグを取得し、サイトID を取得する例です。basename() の代わりに、wp_basename() でも同じです。
$site_id = get_id_from_blogname(basename(get_permalink()));
wp_load_alloptions
全てのオプション情報を取得します。取得した結果はキャッシュされます。
wp_load_alloptions()
- パラメータ
- なし
- 戻り値
- 取得可能な全てのオプションのリスト(連想配列)
- 利用可能箇所
- どこでも
以下はこの関数で取得した結果を var_dump() で確認する例です。
<pre><?php var_dump(wp_load_alloptions()); ?></pre>
以下は上記の出力結果の一部抜粋です。
array(131) {
["siteurl"]=>string(20) "http://localhost/xxxx"
["home"]=>string(20) "http://localhost/xxxx"
["blogname"]=>string(3) "xxxx"
["blogdescription"]=>string(27) "Just another WordPress site"
["users_can_register"]=>string(1) "0"
["admin_email"]=>string(25) "xxxx@xxxx.com"
["start_of_week"]=>string(1) "1"
["use_balanceTags"]=>string(1) "0"
["use_smilies"]=>string(1) "1"
・・・
["default_category"]=>string(1) "1"
["default_comment_status"]=>string(6) "closed"
["default_ping_status"]=>string(6) "closed"
["default_pingback_flag"]=>string(0) ""
["posts_per_page"]=>string(2) "10"
["date_format"]=>string(12) "Y年n月j日"
["time_format"]=>string(5) "g:i A"
["links_updated_date_format"]=>string(18) "Y年n月j日 g:i A"
["comment_moderation"]=>string(0) ""
["moderation_notify"]=>string(1) "1"
["permalink_structure"]=>string(23) "/%category%/%postname%/"
["rewrite_rules"]=>string(16880) "a:170:{s:11:"^wp-json/?$";s:22:"index.php?rest_route=/";s:14:"^wp-json/(.*)?";"
・・・
["blog_charset"]=>string(5) "UTF-8"
["active_plugins"]=>string(143) "a:3:{i:0;s:19:"akismet/akismet.php";i:1;s:41:"block-unit-test/class-block-unit-test.php";i:3;s:41:"wp-multibyte-patch/wp-multibyte-patch.php";}"
["category_base"]=>string(0) ""
["ping_sites"]=>string(26) "http://rpc.pingomatic.com/"
["comment_max_links"]=>string(1) "2"
["gmt_offset"]=>string(1) "0"
["default_email_category"]=>string(1) "1"
["template"]=>string(8) "sample02"
["stylesheet"]=>string(8) "sample02"
["comment_whitelist"]=>string(1) "1"
["comment_registration"]=>string(0) ""
["html_type"]=>string(9) "text/html"
["use_trackback"]=>string(1) "0"
・・・
["default_link_category"]=>string(1) "2"
["show_on_front"]=>string(5) "posts"
["tag_base"]=>string(0) ""
["show_avatars"]=>string(1) "1"
["avatar_rating"]=>string(1) "G"
["upload_url_path"]=>string(0) ""
["thumbnail_size_w"]=>string(3) "150"
["thumbnail_size_h"]=>string(3) "150"
["thumbnail_crop"]=>tring(1) "1"
["medium_size_w"]=>string(3) "300"
["medium_size_h"]=>string(3) "300"
["avatar_default"]=>string(7) "mystery"
["large_size_w"]=>string(4) "1024"
["large_size_h"]=>string(4) "1024"
["image_default_link_type"]=>string(4) "none"
["image_default_size"]=>string(0) ""
["image_default_align"]=>string(0) ""
・・・
["category_children"]=>string(6) "a:0:{}"
}
以下は wp_load_alloptions() のソースです。
function wp_load_alloptions() {
global $wpdb;
if ( ! wp_installing() || ! is_multisite() ) {
$alloptions = wp_cache_get( 'alloptions', 'options' );
} else {
$alloptions = false;
}
if ( ! $alloptions ) {
$suppress = $wpdb->suppress_errors();
if ( ! $alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options WHERE autoload = 'yes'" ) ) {
$alloptions_db = $wpdb->get_results( "SELECT option_name, option_value FROM $wpdb->options" );
}
$wpdb->suppress_errors( $suppress );
$alloptions = array();
foreach ( (array) $alloptions_db as $o ) {
$alloptions[ $o->option_name ] = $o->option_value;
}
if ( ! wp_installing() || ! is_multisite() ) {
/**
* Filters all options before caching them.
* @since 4.9.0
* @param array $alloptions Array with all options.
*/
$alloptions = apply_filters( 'pre_cache_alloptions', $alloptions );
wp_cache_add( 'alloptions', $alloptions, 'options' );
}
}
/**
* Filters all options after retrieving them.
* @since 4.9.0
* @param array $alloptions Array with all options.
*/
return apply_filters( 'alloptions', $alloptions );
}
update_option
サイトのオプションの値を更新します。
オプションの名前を指定して options データベーステーブルの値(WordPress の設定値)を更新します。
指定したオプションが存在しない場合は、add_option() でオプションを追加します。
update_option( $option, $new_value, $autoload )
- パラメータ
-
- $option(文字列):(必須)更新するオプションの名前(オプション設定リファレンス参照)。
- $new_value(mixed):(必須)オプションの値
- $autoload(文字列|真偽値):(オプション)WordPress を開始する際にオプションをロードするかどうか。指定できる値は'yes'または true(自動的にロード)か 'no'または false(自動的にロードされない)。存在しないオプションのデフォルト値は'yes'(存在しないオプションを指定した場合は、そのオプションと値が追加されます)。初期値:null
- 戻り値
- 更新された場合は true、更新に失敗した場合は false。
以下は画像をアップロードする際に自動生成する「medium_large サイズ(レスポンシブ画像)」の「幅」を0に設定して、自動生成させないようにする例です。
update_option('medium_large_size_w',0);
以下は update_option() のソースです。
function update_option( $option, $value, $autoload = null ) {
global $wpdb;
$option = trim( $option );
if ( empty( $option ) ) {
return false;
}
wp_protect_special_option( $option );
if ( is_object( $value ) ) {
$value = clone $value;
}
$value = sanitize_option( $option, $value );
$old_value = get_option( $option );
/**
* Filters a specific option before its value is (maybe) serialized and updated.
*/
$value = apply_filters( "pre_update_option_{$option}", $value, $old_value, $option );
/**
* Filters an option before its value is (maybe) serialized and updated.
*/
$value = apply_filters( 'pre_update_option', $value, $option, $old_value );
/*
* If the new and old values are the same, no need to update.
*/
if ( $value === $old_value || maybe_serialize( $value ) === maybe_serialize( $old_value ) ) {
return false;
}
/** This filter is documented in wp-includes/option.php */
if ( apply_filters( "default_option_{$option}", false, $option, false ) === $old_value ) {
// Default setting for new options is 'yes'.
if ( null === $autoload ) {
$autoload = 'yes';
}
return add_option( $option, $value, '', $autoload );
}
$serialized_value = maybe_serialize( $value );
/**
* Fires immediately before an option value is updated.
*/
do_action( 'update_option', $option, $old_value, $value );
$update_args = array(
'option_value' => $serialized_value,
);
if ( null !== $autoload ) {
$update_args['autoload'] = ( 'no' === $autoload || false === $autoload ) ? 'no' : 'yes';
}
$result = $wpdb->update( $wpdb->options, $update_args, array( 'option_name' => $option ) );
if ( ! $result ) {
return false;
}
$notoptions = wp_cache_get( 'notoptions', 'options' );
if ( is_array( $notoptions ) && isset( $notoptions[ $option ] ) ) {
unset( $notoptions[ $option ] );
wp_cache_set( 'notoptions', $notoptions, 'options' );
}
if ( ! wp_installing() ) {
$alloptions = wp_load_alloptions();
if ( isset( $alloptions[ $option ] ) ) {
$alloptions[ $option ] = $serialized_value;
wp_cache_set( 'alloptions', $alloptions, 'options' );
} else {
wp_cache_set( $option, $serialized_value, 'options' );
}
}
/**
* Fires after the value of a specific option has been successfully updated.
*/
do_action( "update_option_{$option}", $old_value, $value, $option );
/**
* Fires after the value of an option has been successfully updated.
*/
do_action( 'updated_option', $option, $old_value, $value );
return true;
}