独自のWordPressプラグインを構築する方法

公開: 2016-07-13

WordPressプラグインを作成するのは大変な作業のように思えるかもしれません。 場合によっては、これが当てはまります。一部のプラグインは非常に複雑になる可能性があります。 ただし、追加しようとしている機能によっては、実際には多くの機能を簡単に構築できます。 プラグインの作成は、プラグインがどのように機能するかについての基本的な理解があれば、すばやく行うことができます。

プラグインはどこに行きますか?

WordPressのフォルダー構造

開発を始める前に、プラグインがどこに属しているかを知っておくとよいでしょう。 基本的なアプリディレクトリのWordPressフォルダー構造を見てみましょう。 wp-contentフォルダー内に、pluginsディレクトリが表示されます。 これは、個々のプラグインがすべて存在する場所です。

このフォルダ内のプラグインは、単一のファイルまたはサブディレクトリにすることができます。 小さいプラグインは通常、単一の.phpファイルのみを必要とします。 複雑なプラグインには複数のファイルタイプがある場合があります(HTML、CSS、およびJavaScriptはすべて可能です)。 サブディレクトリを作成すると、プラグインの.php関数とともにさまざまなファイルを格納するのに役立ちます。

how-to-build-wordpress-plugin-plugin-file-path

アクションとフィルター

プラグインの構築を開始する前に、開始するためのいくつかの基本を知っておくとよいでしょう。 独自のプラグインのコーディングを開始するときは、アクションとフィルターがどのように機能するかを学ぶことから始めるのがよいでしょう。 基本を知ることは役に立ちます、そしてあなたがそれについてもっと質問があるので、WordPressCodexは素晴らしいリソースです。

プラグイン開発前

メタ情報は非常に重要であり、WordPressにプラグインに関する詳細を伝える情報でもあります。 プラグインには、インストール、削除、アクティブ化、および非アクティブ化するオプションがあります。 技術的には、必要なのはファイルをプラグインとして確立するためのWordPressのプラグイン名だけです。 ただし、他の情報はあなたとあなたのユーザーに役立つので、提供することをお勧めします。

<?php

/**

* Plugin Name: Example Plugin

* Plugin URI: http://mysite.com/

* Description: A brief description about your plugin.

* Version: 1.0 (or whatever current version your plugin is on)

* Author: Plugin Author's Name

* Author URI: Author's website

* License: A "Slug" license name e.g. GPL12

*/

非常にシンプルなプラグイン

小さく始めることは、プラグインの構築を容易にするための良い方法です。 非常に簡単な例を作成しましょう。 アクションとフィルターは物事を起こさせるので、すべての投稿の後にテキスト行を追加して、物事をテストしてみましょう。

開発環境で作業することは常に良いことであり、プラグインを試すときにこれは特に重要です。

まず、新しいファイルを作成し、それが正しい場所にあることを確認します。 このコードをコピーしてメインのプラグインファイルに貼り付け、保存します。 これはメタ情報の後に貼り付けられます。

add_action( 'the_content', 'test_example_text' );

function test_example_text ( $content ) {
    return $content .= '<p>This is my first plugin!</p>';
}

これは、一生懸命働いているフックの例です。 the_contentアクションにフックすることで、WordPressが投稿コンテンツをレンダリングするときに機能します。 WordPressは、add_action呼び出しの下に定義されているtest_example_text関数をadd_action call

プラグインの動作を確認する

おそらく以前にこれを行ったことがあるでしょうが、WordPress管理者にログインすると、左側にプラグインオプションが表示されます。 プラグインが表示されたら、アクティブ化する必要があります。 有効にすると、投稿の最後に表示されます。

how-to-build-wordpress-plugin-plugin-listing

ビルド方法-wordpress-plugin-first-plugin

より複雑なプラグイン

したがって、この例はプラグインの動作の基本を示していますが、もう少し便利なことをしたい場合はどうでしょうか。 カスタム投稿タイプはカスタムサイトのデザインで非常に頻繁に使用されるので、それから始めましょう。 使用できる既存のプラグインがありますが、プラグインの開発を容易にするために、最初からプラグインを作成することをお勧めします。

WordPressのカスタム投稿タイプとは何ですか?

ページと投稿はWordPressで最も人気のあるコンテンツタイプですが、もっと具体的なものが必要な場合はどうでしょうか。 状況によっては、ページと投稿が一般的すぎる場合があるため、カスタム投稿タイプが便利です。 良い例は、カスタム投稿タイプのポートフォリオです。 アイデアは、異なる投稿タイプの値が付加された通常の投稿を作成することです。

WordPressでポートフォリオサイトを作成する方法

ウェブサイトにポートフォリオページを設けることは、非常に多くのことに使用できます。 定義上、それは紙、地図、図面、写真などの資料を保持するために使用されるものです。財務用語でのポートフォリオは...

カスタム投稿タイプは好きなように呼び出すことができます。 たとえば、食品サイトを運営している場合は、便利なレシピ投稿タイプを作成できます。 この投稿タイプは、独自のカスタムカテゴリ構造を持つさまざまなカスタムフィールドを持つことができます。

カスタム投稿タイプの作成

最初に行う必要があるのは、実際にカスタム投稿タイプを作成することです。 上記と同じファイル構造を使用して、フォルダーと.phpファイルを追加しましょう。 メタ情報が作成されていると仮定して、メタブロックの後に機能を追加します。

より複雑なプラグインの作成の基本を示すために、「レシピ」と呼ばれるカスタム投稿タイプのプラグインを作成します。

基本バージョン

以下のスニペットを見ると、最初は非常に簡単です。 これが機能することを確認するために、左側のメニューにカスタム投稿タイプが表示されます。 register_post_type()は、 initアクションにフックする関数で使用されます。 カスタム投稿タイプと引数配列の2つの引数があります。

function recipe_custom_post_type() {
	register_post_type( 'recipe', array( 'public' => true, 'label' => 'Recipes' ) );
}
add_action( 'init', 'recipe_custom_post_type' );

how-to-build-wordpress-plugin-custom-post-type-01

高度なバージョン

この基本バージョンのプラグインは実際に機能しますが、プラグインを本当に素晴らしいものにするためには、より多くの機能が必要です。 たとえば、ラベルにはまだ「新しい投稿を追加」と表示されています。 これをよりレシピ固有のものにしたいのです。 結局のところ、これが私たちが単なる投稿を使用していない理由です。 カスタマイズは、labelsプロパティを使用して行うことができます。

how-to-build-wordpress-plugin-add-new-post

それでは、今行ったことをスクラッチして、代わりにこれを使用しましょう。

add_action( 'init', 'recipe_custom_post_type' );
add_filter( 'post_updated_messages', 'recipes_messages' );

function recipe_custom_post_type() {
	$labels = array(
		'name'               => 'Recipes',
		'singular_name'      => 'Recipe',
		'menu_name'          => 'Recipe',
		'name_admin_bar'     => 'Recipe',
		'add_new'            => 'Add New',
		'add_new_item'       => 'Add New Recipe',
		'new_item'           => 'New Recipe',
		'edit_item'          => 'Edit Recipe',
		'view_item'          => 'View Recipe',
		'all_items'          => 'All Recipes',
		'search_items'       => 'Search Recipes',
		'parent_item_colon'  => 'Parent Recipes:',
		'not_found'          => 'No recipes found.',
		'not_found_in_trash' => 'No recipes found in Trash.'
	);

	$args = array( 
		'public'      => true, 
		'labels'      => $labels,
		'rewrite'		=> array( 'slug' => 'recipe' ),
		'has_archive'   => true,
		'menu_position' => 20,
		'menu_icon'     => 'dashicons-carrot',
		'taxonomies'		=> array( 'post_tag', 'category' ),
		'supports'      => array( 'title', 'editor', 'author', 'thumbnail', 'excerpt', 'custom-fields', 'comments' )
	);
    	register_post_type( 'recipe', $args );
}

function recipes_messages( $messages ) {
	$post = get_post();

	$messages['recipe'] = array(
		0  => '',
		1  => 'Recipe updated.',
		2  => 'Custom field updated.',
		3  => 'Custom field deleted.',
		4  => 'Recipe updated.',
		5  => isset( $_GET['revision'] ) ? sprintf( 'Recipe restored to revision from %s',wp_post_revision_title( (int) $_GET['revision'], false ) ) : false,
		6  => 'Recipe published.',
		7  => 'Recipe saved.',
		8  => 'Recipe submitted.',
		9  => sprintf(
			'Recipe scheduled for: <strong>%1$s</strong>.',
			date_i18n( 'M j, Y @ G:i', strtotime( $post->post_date ) )
		),
		10 => 'Recipe draft updated.'
	);

	return $messages;
}


how-to-build-wordpress-plugin-add-new-recipe

上部のテキストに「新しいレシピを追加」と表示されている様子をご覧ください。 これは、「新しいアイテムを追加」を目的のテキストでカスタマイズすることで実現しました。

how-to-build-wordpress-plugin-ui-elements

how-to-build-wordpress-plugin-reciep-posts

ここでは多くのことが行われており、引数を処理するときに物事はかなり詳細になります。 視覚的に明らかなのは、 supportsプロパティです。 ここでは、タイトル、編集者、作成者、サムネイル、抜粋、カスタムフィールド、およびコメントを含めることを宣言しました。 これらは、管理ユーザーインターフェイスとフロントエンドの一部にも表示されます。 taxonomiesプロパティを使用すると、カスタム分類法をカスタム投稿タイプに割り当てることができます。

how-to-build-wordpress-plugin-ui-new

投稿タイプのインタラクションメッセージ

保存、削除、検索などを行うたびに、デフォルトのメッセージが表示されます。 私たちのrecipes_messages関数には、これらのメッセージのリストがあります。 適切なメッセージを使用してカスタム投稿タイプの配列を定義すると、カスタム投稿タイプのように読みやすくなります。 言葉遣いではレシピ固有に見えるので、これはカスタム投稿タイプとよく合います。

how-to-build-wordpress-plugin-recipe-text

プラグインが完成したら、WordPressプラグインディレクトリに公開して、他の人もダウンロードできるようにすることができます。 この場合、 readme.txtを含めると、自分のようなプラグインを探している人に役立ちます。 基本的に、このファイルにはあなたの名前とプラグインの機能が含まれますが、各リビジョンの詳細と更新の詳細を含めることもできます。

ご覧のとおり、プラグインは非常に単純な場合も複雑な場合もあります。 プラグインの作成は、最初に思われるほどトリッキーではなく、WordPressサイトを開発するときに習得するのに適した習慣です。 整理が簡単で、複数のサイトで再利用できるため、WordPressの開発がより効率的になります。

how-to-build-wordpress-plugin-ebook-cta