WordPressのPHP用語
WordPressでサイト構築をする際によく使うPHP言語と、その意味や使い方についての一覧を作成しました。
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
その他
<
< を意味する
>
> を意味する
%s
sprintf() ファンクション内で使用されるフォーマット指定子の一つ。文字列を埋め込む