京都らしく腹黒くて面白いコンテンツを中心としたWEBメディア

成功堂チョメチョメディア

WordPress用繰り返しができるカスタムフィールドプラグインを自作してみた!

 
この記事を書いている人 - WRITER -
ネオ
少しでも面白いと思って頂ければ幸いです。 なんて本当は、そんなことまったく思っていない京都の腹黒webデザイナーです。

WordPress(ワードプレス)を使ってブログやWebサイトを運営している方は多いと思います。
WordPressは何かと便利なので、僕もサイトを構築するときに利用して作っています。
※ランディングページなどペライチのサイトを除く

そんなWordPressを利用したサイト構築において、Web制作の知識が無い人にWordPressのエディタ「Gutenberg」で自由にブログやサイトが更新できますよ!と言っても難しいので、カスタムフィールドと呼ばれる追加情報を投稿する機能を使い、わかりやすく入力できるように構築するのが製作者としては優しいかなと思います。

そして、そのカスタムフィールドを利用するときに、お世話になるプラグインが、ご存知「Advanced Custom Fields」です。
この通称ACFは、多機能な上、簡単にカスタムフィールドを構築できます。

しかし”一つだけ問題があります!!”

それは、カスタムフィールドの繰り返しが無料版ではできない事です!!
カスタムフィールドの繰り返し機能がないと、よくある質問や画像ギャラリーといった決まった型の繰り返しに利用できないのです。※有料版のACFなら繰り返し機能がついてます。

なので、繰り返しのできるカスタムフィールドを自作してみました。
今回は、そんなWordPressのプラグインを作る時につまずいたことをまとめたいと思います。

まずは、完成品はこちら
※見よこれが努力の結晶だ!!

基礎編

1.そもそもWordPressのプラグインってどうやって作るの?

単純にphpというプログラミング言語で作ります。
そしtrWordPressはプラグインディレクトリに下記の情報を入力したファイルを置けばプラグインとして読み込まれます。

<?php
/*Plugin Name: Hello_Worldプラグインの名前
Plugin URI: Description: プラグインの説明
Version: 1.0.0プラグインのバージョン
Author:製作者名前
Author URI:製作者URILicense: GPL2ライセンス名
*/
class Hello_World {
ここに処理を書いていく
}
new Hello_World();
?>

2.プラグインの構造は複雑化するのでクラスで作ろう

作る内容によっては複雑になるのでクラスを利用しよう。

少し濃い内容編

1.記事の登録や更新時の処理アクションフック

これは、今回本当に苦労した部分
基本的にはsave_postで済むことが多いのですが、更新時のみだけ動作したいときはedit_postを利用しよう

add_action( 'save_post', '関数名', 引数 );
add_action( 'edit_post', '関数名', 引数 );

2.save_postは自動保存をめちゃする

save_postはボタンを押して保存するタイミングだけでなく自動保存時にも動作するので、データベースの中が大変なことになっていましいます。
なので、自動保存時には処理をしないという処理を書きましょう。

add_action( 'save_post', 'sample', $post_id );

function insert_posts($post_id){

if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return $post_id;
※この一行を入れよう!

...処理のコード
}

最後に紆余曲折あり、繰り返し機能付きカスタムフィールドのプラグインを作ったのですが、作ってる途中で、僕の求めている繰り返し機能が標準で使用できる最高のカスタムフィールド用の無料プラグイン「Smart Custom Fields」見つけてしまい僕の作ったプラグインはお蔵入りになったとさ…
トホホ…。

追記※重要
京都でWordPressを利用したWebサイトが必要ならご相談ください。
成功堂ではなくネオに直接言って頂ければ尚嬉しいですw

この記事を書いている人 - WRITER -
ネオ
少しでも面白いと思って頂ければ幸いです。 なんて本当は、そんなことまったく思っていない京都の腹黒webデザイナーです。

- Comments -

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA


Copyright© 成功堂チョメチョメディア , 2019 All Rights Reserved.