WordPressのPHP用語

blog画像(PHP用語)

WordPressでサイト構築をする際によく使うPHP言語と、その意味や使い方についての一覧を作成しました。

Table of Contents

A

add_action();

なんらかのアクションが実行される際に、フック地点に処理を追加(加工や編集はできない)

add_filter();

フィルターフックに新しいフィルター関数を追加するための関数(受け取って加工して返すの意)

<?php
function my_replace_filter($content)
{
	// デザインという文字列をWordpressという文字列に置換
	$content = str_replace('デザイン', 'Wordpress', $content);
	return $content;
}

function my_process_filter($content)
{
	// 置換された文字列に対してさらに強調表示
	$content = str_replace('Wordpress', '<strong>Wordpress</strong>', $content);
	return $content;
}
function my_color_change_filter($content)
{
	// 強調表示された文字列に対してさらに色を変更
	$content = str_replace('Wordpress', '<span style="color: blue;">Wordpress</span>', $content);
	return $content;
}

// 同じフィルターフック(the_content)に複数のフィルター関数を追加する
add_filter('the_content', 'my_replace_filter', 10); // 優先度10
add_filter('the_content', 'my_process_filter', 20); // 優先度20
add_filter('the_content', 'my_color_change_filter', 30);

add_image_size()

新しいカスタム画像サイズを追加

add_image_size( '任意の名称', 横数字, 縦数字, true );

add_post_type_support();

指定された投稿タイプ(post type)に対して特定の機能を追加

<--固定ページに抜粋機能を追加する例-->
add_post_type_support('page', 'excerpt');

add_theme_support(‘block-template-parts’);

テーマがブロックテンプレートパーツのをサポートを有効化

add_theme_support(‘editor-styles’);
add_editor_style();

テーマが Gutenberg エディタ(ブロックエディタ)にスタイルを適用するための機能を有効化。テーマがエディタスタイルをサポートしている場合、Gutenberg エディタで投稿を編集する際に、実際の表示がテーマのスタイルに近づく。2つを組み合わせて使用

<?php
// Gutenberg エディタ用のテーマスタイルのサポートを有効化
add_theme_support('editor-styles');

// Gutenberg エディタ用のテーマスタイルシートを登録
add_editor_style('スタイルシートのアドレスとスタイルシート名');
?>

add_theme_support(‘post-thumbnails’);

投稿サムネイルを有効化

add_theme_support(‘title-tag’);

ページに応じたタイトルを出力(HTMLの<title>タグは不要となる)

after_setup_theme

アクションフックの1つであり、WordPressテーマが初期化された直後に実行されるタイミングを提供

B

block_template_part();

カスタムブロックパターンを配置

<--patternsフォルダに作成したheader.htmlというファイルを読み込む例
<?php block_template_part('header'); ?>

bloginfo(‘name’);

サイトのタイトルを表示

bloginfo(‘charset’);

サイトの文字コードを表示

bloginfo(‘description’);

サイトの説明を表示

body_class();

ページに適切なクラスを取得

<body <?php body_class(); ?>>

C

cat_name;

カテゴリー名

cat_ID;

カテゴリーID

D

date();

日付と時刻を指定された形式でフォーマット

<?php
$date = date('Y-m-d H:i:s');
echo $date;
?>
  • Y: 4桁の年(例: 2022)
  • y: 2桁の年(例: 22)
  • m: 2桁の月(01から12)
  • n: 月(1から12)
  • d: 2桁の日(01から31)
  • j: 日(1から31)
  • D: 曜日の省略形(例: Sun、Mon)
  • l: 曜日のフルスペル(例: Sunday、Monday)
  • F: 月のフルスペル(例: January、February)
  • M: 月の省略形(例: Jan、Feb)
  • H: 24時間形式の時(00から23)
  • h: 12時間形式の時(01から12)
  • i: 分(00から59)
  • s: 秒(00から59)
  • a: 午前または午後(amまたはpm)
  • A: 午前または午後(AMまたはPM

dynamic_sidebar( );

サイドバーウィジェットエリアに登録されたウィジェットを表示

<?php dynamic_sidebar( 'sidebar-1' ); ?>

E

esc_html();

HTMLの特殊文字(<, >, ", ', & など)をエスケープ処理

<?php
$unsafe_data = '<script>alert("Hello!");</script>';
$safe_data = esc_html($unsafe_data);
echo $safe_data; // タグが無効化された安全なHTMLコンテンツが表示されます
?>

esc_attr();

HTML属性の値をエスケープ

<?php
$unsafe_data = 'onclick="alert(\'Hello!\');"';
$safe_data = esc_attr($unsafe_data);
echo '<button ' . $safe_data . '>Click me</button>';
?>

esc_url();

URLをエスケープ

<?php
$unsafe_data = 'javascript:alert("Hello!");';
$safe_data = esc_url($unsafe_data);
echo '<a href="' . $safe_data . '">Click me</a>';
?>

excerpt_mblength

the_excerpt();によって生成される抜粋の文字数を設定するためのフィルターフック

<?php
function custom_excerpt_length( $length ) {
    return 50; // 50文字に設定
}
add_filter( 'excerpt_mblength', 'custom_excerpt_length' );

excerpt_more

the_excerpt();によって生成される抜粋の末尾に表示される「…」(省略記号)をカスタマイズするためのフィルターフック

<?php
function custom_excerpt_more( $more ) {
    return ' <a href="' . get_permalink() . '">[続きを読む]</a>';
}
add_filter( 'excerpt_more', 'custom_excerpt_more' );

F

foreach

配列の要素をひとつずつ順に取り出して処理

<?php
// $postsから要素をひとつ取り出して$postに格納、処理が終わったら次の要素に進む
foreach ($posts as $post);
?>

function

これから関数を定義するという宣言

function_exists()

指定された関数が定義されているかどうかを確認

G

get_category_link();

カテゴリーのパーマリンク URL を取得

<?php
//IDが23のカテゴリーに関連するパーマリンクを取得する例
$category_link = get_category_link( 23 );
?>

get_field();

Advanced Custom Fields(ACF)プラグインで使用されるカスタムフィールドの値を取得

<?php
$value = get_field($field_name, $post_id);
?>

$field_name(必須):取得したいカスタムフィールドのフィールド名(キー)を指定(ACFフィールドグループで設定されたフィールド名)
$post_id(オプション):カスタムフィールドが関連付けられている投稿のIDを指定。省略した場合、現在の投稿($post 変数で参照される投稿)のカスタムフィールドを取得

get_footer();

footer.phpを読み込む

get_header();

header.phpを読み込む

get_permalink();

現在の投稿やページのパーマリンクを取得

<?php
$post_permalink = get_permalink();
echo $post_permalink;
?>

get_next_post();

現在の投稿の直後にある投稿を取得

<?php
$next_post = get_next_post();
?>

get_post();

指定された投稿またはページの詳細情報を取得

<?php
// 投稿IDが10の投稿の情報を取得する
$post = get_post(10);

// 取得した情報を表示する
echo '投稿タイトル: ' . $post->post_title . '<br>';
echo '投稿内容: ' . $post->post_content . '<br>';
echo '投稿作成日時: ' . $post->post_date . '<br>';
?>

get_posts();

指定された条件に基づいて複数の投稿を取得

<?php
$args = array(
    'post_type'      => 'post', // 取得する投稿タイプを指定します。デフォルトは 'post' です。
    'posts_per_page' => 5,      // 取得する投稿の数を指定します。デフォルトは -1 で全ての投稿を取得します。
);

$posts = get_posts( $args );

if ( $posts ) {
    foreach ( $posts as $post ) {
        setup_postdata( $post );

        // 投稿のタイトルを出力します
        echo '<h2>' . get_the_title() . '</h2>';
        // 投稿の本文を出力します
        echo '<div>' . get_the_content() . '</div>';
    }
    wp_reset_postdata(); // ループ後に投稿データをリセットします
}
?>

get_post_class();

指定された投稿に関連付けられたクラスを取得

<?php
$post_classes = get_post_class();
foreach ($post_classes as $class) {
echo $class . ' '; // 投稿に関連付けられたCSSクラスを表示
}
?>

get_post_meta();

特定の投稿のカスタムフィールドの値を取得

<?php
$meta_value = get_post_meta(投稿ID, カスタムフィールド名, 文字列を返すかどうか);
?>

get_post_type_object();

投稿タイプ(post type)に関する情報を取得

get_previous_post();

現在の投稿の直前にある投稿を取得

<?php
$previous_post = get_previous_post();
?>

get_search_form();

検索フォームを表示。searchform.phpがあればそれがフォームとして出力される。
 ※検索結果はsearch.phpがあればそれ、なければindex.php

get_sidebar();

sidebar.phpを読み込む

<?php get_sidebar(); ?>
<--引数を指定する例(sidebar-content.phpを読み込む例)-->
<?php get_sidebar('content'); ?>

get_sub_field();

Advanced Custom Fields(ACF)プラグインで使用されるリピーターフィールドやフレキシブルコンテンツフィールド内のサブフィールドの値を取得

<?php
$value = get_sub_field($field_name);
?>
$field_name(必須):取得したいサブフィールドのフィールド名(キー)を指定

下記のコードは、フィールドグループ内textサブフィールドの値を取得し、それを表示する例

<?php
if( have_rows('フィールドグループ名') ):
    while( have_rows('フィールドグループ名') ): the_row();
        $text_value = get_sub_field('text');
        echo $text_value;
    endwhile;
endif;
?>

get_stylesheet_uri();

テーマのスタイルシート(style.css)のパスを取得

get_template_part();

テーマ内の別のファイル(テンプレートファイル)を取得して表示

<?php get_template_part('template-parts/archive','post'); ?>

get_term_by();

指定された条件に基づいてタームを取得

<?php
//categoryタクソノミーからnewsというスラッグのタームオブジェクトを取得する例
$term = get_term_by('slug', 'news', 'category');
?>

get_term_link();

ターム(用語)のパーマリンク URL を取得

<?php
//IDが23のカテゴリータームに関連するパーマリンクを取得する例
$term_link = get_term_link( 23, 'category' );
?>

get_terms();

指定されたタクソノミー内の用語(terms)を取得。タクソノミーの一覧を取得する際に使用し、引数によって、特定のタクソノミー、特定の用語のみ、または特定の条件に基づいて用語を取得

<?php
$terms = get_terms( 'category' ); // カテゴリーの用語を取得
?>
<?php
$args = array(
    'taxonomy' => 'category',
    'orderby' => 'name',
    'order' => 'ASC',
    'hide_empty' => false,
);
$terms = get_terms( $args );
?>
<?php
// 特定のタクソノミーから用語を取得する例
$terms = get_terms( 'category' );

if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a><br>';
    }
}
?>

get_the_archive_description();

現在のアーカイブページ(カテゴリーアーカイブ、タグアーカイブ、カスタムタクソノミーアーカイブなど)の説明を取得

get_the_category();

カテゴリーを取得

<?php get_the_category(); ?>
<--カテゴリーIDを指定する場合(ID2371の例)-->
<?php get_the_category(2371); ?>

get_the_date();

現在の投稿またはページの日付を取得

<--例1-->
<?php
$date = get_the_date('Ymd');
echo $date;
?>

<--例2-->
<?php echo esc_html(get_the_date()); ?>

get_the_ID();

現在のループ内で処理されている投稿やページのIDを取得

<article id="post-<?php get_the_ID(); ?>"><?php post_class(); ?></article>
<?php
$post_id = get_the_ID();
$post_title = get_the_title($post_id);
echo $post_title;
?>

get_theme_file_uri();

テーマ内のファイル名を取得

get_the_permalink();

現在の投稿やページのパーマリンク(永続的なリンク)を取得

get_the_terms();

特定の投稿(またはカスタム投稿タイプ)に関連する用語(terms)を取得。特定の投稿に関連付けられたカテゴリーやタグなどの用語を取得する際に使用し、一般的に、テンプレートファイル内で、個々の投稿に関連付けられたカテゴリーやタグを表示

<?php
// 特定の投稿に関連する用語を取得する例
$terms = get_the_terms( get_the_ID(), 'category' ); //第一引数は記事ID、第二引数は記事が紐づくタームが属するカスタム分類のスラッグ

if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) {
    foreach ( $terms as $term ) {
        echo '<a href="' . get_term_link( $term ) . '">' . $term->name . '</a><br>';
    }
}
?>

H

has_post_thumbnail

アイキャッチ画像がある場合

home_url();

ページのURLを返す

<--トップページの場合-->
<?php echo esc_url(home_url('/')); ?>
<--ページ指定の場合(スラッグがprofileの例)-->
<?php echo esc_url(home_url('/')); ?>profile/

I

if

条件を満たす場合の処理

implode

配列の要素を文字列に変換

<?php
echo esc_html(implode(',',$authors));
?>

in_array();

指定した値が配列内に存在するかどうかを確認

<?php
$fruits = array( 'apple', 'banana', 'orange', 'grape' );
//orangeが入っている場合は
if ( in_array( 'orange', $fruits ) ) {
    echo 'Orange is found in the array.';
//そうでない場合は
} else {
    echo 'Orange is not found in the array.';
}
?>

in_category();

特定のカテゴリ(個々の投稿カテゴリー)に投稿が属しているかどうかを確認

<?php
if(in_category('news')):
?>

is_active_sidebar();

サイドバーウィジェットエリアが現在のページで有効になっている場合

<?php
if ( is_active_sidebar( 'sidebar-1' ) ) {
    // サイドバーウィジェットエリアが有効な場合に実行
    dynamic_sidebar( 'sidebar-1' );
} else {
    // 何も表示しない
}
?>

is_category();

現在のページが特定のカテゴリーのアーカイブページかどうか

is_404();

404ページの場合

is_front_page();

トップページの場合(サイトのホームページが表示されている場合)

is_home();

トップページの場合(表示設定で最新の投稿が表示されている場合)

is_page();

固定ページの場合

is_search();

検索ページの場合

is_singular();

個別投稿ページの場合

<--単一の投稿ページ(post)、固定ページ(page)、カスタム投稿タイプのページのいずれかの場合に実行-->
<?php
if ( is_singular() ) {
}
?>
<--単一の投稿ページ(post)の場合に実行-->
<?php
if ( is_singular('post') ) {
}
?>

is_tax();

現在のページが特定のタクソノミーのアーカイブページかどうか

J

K

L

language_attributes();

言語情報を取得して出力

M

N

O

P

post_class();

投稿に関連する適切なCSSクラスが設定される

<article id="post-<?php get_the_ID(); ?>"><?php post_class(); ?></article>

post_type_archive_title();

カスタム投稿タイプのアーカイブタイトルを取得して表示

post_content;

本文

post_custom();

現在の投稿のすべてのカスタムフィールドの値を取得

<?php echo post_custom('カスタムフィールド名'); ?>

post_date;

投稿日時

post_name;

スラッグ

post_parent;

親のID

post_title;

タイトル

Q

R

register_nav_menus

ナビゲーションメニューを登録して管理画面でメニューを有効化

<?php
// テーマの機能を初期化するための関数
function my_theme_setup() {
    register_nav_menus( array(
        'global-menu' => 'グローバルメニュー',
        'footer-menu'  => 'フッターメニュー',
    ) );
}
add_action( 'after_setup_theme', 'my_theme_setup' );
?>

register_sidebar();

ウィジェットエリア(サイドバー)を定義および登録

<?php
function theme_widgets_init() {
    register_sidebar( array(
        'name'          => 'primary_widget',
        'id'            => 'sidebar-1',
        'description'   => 'サイドバーウィジェット',
        'before_widget' => '<div id="%1$s" class="widget %2$s">',
        'after_widget'  => '</div>',
        'before_title'  => '<h2 class="widget-title">',
        'after_title'   => '</h2>',
    ) );
}
add_action( 'widgets_init', 'theme_widgets_init' );
?>

S

setup_postdata();

ループ内で使用される各投稿のデータをセットアップ

<?php
setup_postdata($post);
?>

sprintf();

指定された書式文字列に引数を埋め込む

<?php
$number = 3.14159;
//%.2fは小数点2位を示す(ちなみに%sは文字列、%dは整数を表す)
$text = sprintf('The value of pi is approximately %.2f', $number);
echo $text;
?>

U

T

the_archive_title();

アーカイブページ(カテゴリーアーカイブ、タグアーカイブ、日付アーカイブなど)のタイトルを表示。カテゴリーアーカイブではカテゴリー名、タグアーカイブではタグ名が表示される

the_category();

カテゴリーを取得してulとli形式で出力

the_content();

投稿本文を表示

the_excerpt();

投稿の抜粋を表示(標準は110文字で超えると以降は…になる)

the_permalink();

現在の投稿やページのパーマリンク(永続的なリンク)を表示

the_post();

順にデータを取り出し

the_posts_pagination();

ページネーション(ページ分割)を表示

<?php
function page_navi()
{
	the_posts_pagination(
		array(
			'prev_text' => '<<前へ',
			'next_text' => '次へ>>',
		)
	);
}
?>

the_post_thumbnail();

投稿に添付された画像のサムネイルを表示

the_privacy_policy_link();

プライバシーポリシーページへのリンクを表示

the_search_query();

現在の検索クエリ(検索キーワード)を表示

the_tags();

投稿に関連付けられたタグを表示

<?php
if ( has_tag() ) {
    the_tags( '<ul><li>', '</li><li>', '</li></ul>' );
}
?>

the_title();

投稿タイトルを表示

the_time();

現在のループ内の投稿やページの時間を表示

V

var_dump();

中身の変数の型や値を出力

<?php
$variable = 'Hello, world!';
var_dump($variable); // string(13) "Hello, world!"  13は構成されている文字列の長さ
?>

W

wp_body_open();

JavaScriptなどを出力

wp_date();

今日の日付を取得

<?php echo esc_html(wp_date('Y年m月d日')); ?>

wp_enqueue_style(ハンドル名,URL,依存関係,バージョン,メディア);

スタイルシート(CSSファイル)を追加

wp_enqueue_script(ハンドル名,URL,依存関係,バージョン,読み込み位置);

JavaScriptファイルを追加

wp_enqueue_scripts

スクリプトやスタイルシートを追加するための適切な時点でのフックポイントを提供

wp_footer();

フッター部分に追加のコンテンツやスクリプトを出力

wp_get_attachment_image();

添付ファイル(画像)のIDを受け取り、そのIDに基づいて適切な<img>タグを生成

<?php wp_get_attachment_image(画像のID, 画像のサイズ); ?>

wp_get_document_title();

管理画面の設定の一般のサイト名称を出力

<?php echo esc_html(wp_get_document_title(); ?>

wp_get_theme();

現在のWordPressテーマの情報を取得

<?php
// アクティブなWordPressテーマの情報を取得する
$current_theme = wp_get_theme();
// テーマの名前を表示する
echo 'テーマ名: ' . $current_theme->get('Name') . '<br>';
// テーマのディレクトリパスを表示する
echo 'テーマディレクトリ: ' . $current_theme->get_template_directory() . '<br>';
// テーマのバージョンを表示する
echo 'テーマバージョン: ' . $current_theme->get('Version') . '<br>';
?>

wp_head();

スタイルシートなどを出力

<?php wp_head(); ?>
</head>

wp_link_pages();

同一投稿でページが複数になる場合、各ページへのリンクを出力(改ページブロックを設置して区切った場合)

wp_list_pluck();

配列から特定のキーの値のリストを抽出

wp_kses_post();

許可されていない要素の属性を除去

wp_nav_menu

登録されたナビゲーションメニューを表示

<?php
wp_nav_menu(
	array(
		'theme_location'  => 'primary', //functions.php ファイルで定義されたナビゲーションメニューの場所を指定
		'menu_class'      => 'menu-wrapper', //ナビゲーションメニューを囲む <ul> 要素のクラスを指定
		'container_id' => 'jjj-fff', //ナビゲーションメニューを囲むコンテナー要素(通常は <div> 要素)のIDを指定
		'container_class' => 'primary-menu-container', //ナビゲーションメニューを囲むコンテナー要素のクラスを指定
		'items_wrap'      => '<ul id="primary-menu-list" class="%2$s">%3$s</ul>', //ナビゲーションメニュー内のリストアイテム <li> を包む要素(通常は <ul> 要素)のHTML構造を指定
	)
);

wp_reset_postdata();

変更された投稿データを元の状態にリセット

wp_trim_words();

テキストを指定された単語数にトリミング

<?php
$post_content = get_the_content(); // 投稿の本文を取得
// 投稿本文を100単語に制限
$trimmed_content = wp_trim_words($post_content, 100);
echo $trimmed_content; // 制限された投稿本文を出力
?>

while

条件が合致している間はその処理を繰り返す

X

Y

Z

その他

&lt;

< を意味する

&gt;

> を意味する

%s

sprintf() ファンクション内で使用されるフォーマット指定子の一つ。文字列を埋め込む