2026年11月12日

2026年11月12日

WordPressのカスタムウィジェットを作成する方法

はじめに

カスタムウィジェットは、WordPressテーマの機能を拡張するための重要なツールです。独自のウィジェットを作成することで、ウェブサイトのユニークさと使い勝手を高めることができます。この記事では、その作り方について詳しく紹介します。

症状・背景

このテーマが必要になる主な場面:

  • カスタムウィジェットを使用して特定のコンテンツや情報を表示したい場合
  • テーマ内で独自の機能を提供したい場合
  • 既存のウィジェットに不足している機能を持たせたい場合
  • WordPressサイトのカスタマイズ性を高めたい場合

手順・設定方法

ステップ1: カスタムウィジェットクラスの作成

# テーマディレクトリ内のincludes/widgetsディレクトリを用意します。
mkdir -p wp-content/themes/your-theme/includes/widgets

# カスタムウィジェットクラスを作成します。ここでは、「MyCustomWidget」クラスを例に挙げます。
touch wp-content/themes/your-theme/includes/widgets/class-my-custom-widget.php

ステップ2: ウィジェットの基本機能設定

# MyCustomWidgetクラスの内容を編集します。以下はその例です。
vi wp-content/themes/your-theme/includes/widgets/class-my-custom-widget.php

<?php
class MyCustomWidget extends WP_Widget {

	/**
	 * コンストラクタ
	 */
	function __construct() {
		parent::__construct(
			'my_custom_widget', // ワイジットID
			esc_html__( 'My Custom Widget', 'your-theme-textdomain' ), // 名称
			array( 'description' => esc_html__( 'A custom widget for your theme.', 'your-theme-textdomain' ) ) // 説明
		);
	}

	/**
	 * ウィジェットフォームのHTMLを出力します。
	 */
	function form( $instance ) {
		if ( isset( $instance[ 'title' ] ) ) {
			$title = $instance[ 'title' ];
		}
		else {
			$title = esc_html__( 'New title', 'your-theme-textdomain' );
		}
		echo '<p>';
		echo '<label for="' . $this->get_field_id( 'title' ) . '">' . esc_attr__( 'Title:', 'your-theme-textdomain' ) . '</label>';
		echo '<input class="widefat" id="' . $this->get_field_id( 'title' ) . '" name="' . $this->get_field_name( 'title' ) . '" type="text" value="' . esc_attr( $title ) . '">';
		echo '</p>';
	}

	/**
	 * ウィジェットを保存します。
	 */
	function update( $new_instance, $old_instance ) {
		$instance = array();
		$instance['title'] = ( ! empty( $new_instance['title'] ) ) ? strip_tags( $new_instance['title'] ) : '';
		return $instance;
	}

	/**
	 * ウィジェットの表示を処理します。
	 */
	function widget( $args, $instance ) {
		extract( $args );
		echo $before_widget;
		if ( ! empty( $instance['title'] ) ) {
			echo $before_title . apply_filters( 'widget_title', $instance['title'], $instance, $this->id_base ) . $after_title;
		}
		echo '<p>';
		echo wp_kses_post( 'This is my custom widget content' );
		echo '</p>';
		echo $after_widget;
	}
}

ステップ3: カスタムウィジェットをテーマに登録

# テーマのfunctions.phpファイルを開きます。
vi wp-content/themes/your-theme/functions.php

# 以下のようにカスタムウィジェットクラスをインクルードし、WordPressに登録します。
require_once get_template_directory() . '/includes/widgets/class-my-custom-widget.php';
function your_theme_widgets_init() {
	register_widget( 'MyCustomWidget' );
}
add_action( 'widgets_init', 'your_theme_widgets_init' );

ステップ4: ウィジェットの実践とトラブルシュート

# ダッシュボードにログインし、ウィジェットページを開きます。
wp-admin/widgets.php

# 「My Custom Widget」を追加して設定を行います。必要に応じてカスタマイズします。

注意事項

  • ウィジェットの作成と登録はテーマ固有のファイルを使用するため、アップデート時に失われる可能性があります。
  • 外部プラグインや他のテーマとの互換性を考慮することが重要です。
  • セキュリティ強化のために、常に最新のWordPressおよび関連ソフトウェアをインストールし、脆弱性のチェックを行うことをお勧めします。
  • カスタムウィジェットはパフォーマンスに影響を与える可能性があるため、効率的なコード作成と最適化が求められます。

まとめ

1. ウィジェットクラスの作成: ウィジェットの基本機能を定義します。

2. 登録: テーマのfunctions.phpに追加することで、WordPressで利用可能になります。

3. 設定: ダッシュボードからカスタムウィジェットを設定し、ウェブサイト上で使用できます。

4. トラブルシュート: ウィジェットが正しく動作しない場合、コードを見直すかサポートコミュニティに問い合わせる。

5. セキュリティとパフォーマンスの最適化: 定期的なチェックと更新を行い、効率性を確保します。

関連記事:

お気軽にご相談ください

お見積りへ お問い合わせへ
▲