Shinichi Nishikawa's

How I work, make, study and live.

WordPressの表示設定/フロントページの設定で固定ページを選択し、投稿ページを選択した時の投稿ページURLの取得の仕方

get_permalink( get_option( 'page_for_posts' ) );

↓ プラグインを作る方々への本、書きました。 ↓

WordPressの管理画面に独自のオプション保存をするためのSettings APIの使い方

WordPressの管理画面に独自のオプションを保存するための方法です。

書籍『WordPressプラグイン開発のバイブル』の中では、紹介しきれなかった部分です。

Settings APIとは

Settings APIは、テーマやプラグインから管理画面に独自の設定保存領域を作るためのAPIで、バリデーションや保存などの大部分をWordPressに任せることができる便利なものです。

Settings API利用の基本的な流れ

もっともシンプルに項目を追加する流れは、以下のようになります。

  1. admin_init フックにて、以下の3つを登録
    1. セクション:管理画面のどこに表示するか ( add_settings_section )
    2. フィールド:input, selectなど (add_settings_field )
    3. 設定:name 要素 ( register_setting )
  2. セクションやフィールドのコールバック関数を定義する。
    ここで、管理画面に表示させるべきフォームや説明文などを決める。
  3. 保存される値のサニタイズ用の関数を定義する

自分自身でテーブルなどを書く手間がすべて省けますので、楽ちんです。

関数は3つ(全部admin_initにフックします)

1. add_setteings_section

add_settings_section(
    'ogp_settings', // id
    __( 'OGP Settings', 'nskw-ogp-generator' ), // 表示する文字
    'nskw_add_settings_section', // コールバック関数
    'media' // どのページに追加するか。
    );

上記のように使います。ここで指定したIDは、次のフィールドを登録するときの印になります。

3つめはコールバック関数の名前で、セクション内で実行される関数です。出力する場合には、echoします。

2.add_settings_field

add_settings_field(
    'ogp_img_field', // ID
    __( 'Default Image', 'nskw-ogp-generator' ), // 表示する文字
    'nskw_ogp_img_field', // コールバック関数
    'media', // どのページに追加するか
    'ogp_settings' // そのセクションに表示するか
    );

ここで指定したIDは次の設定を登録する際に使います。

3つめはコールバック関数の名前で、inputなどの要素を出力します。

3. register_setting

register_setting( 'media', 'ogp_img_field', 'esc_url' );

どのページ(media)に、なんという名前のsetting(ogp_img_field)を追加するかを登録します。最後のesc_urlはサニタイズするための関数名を指定します。自分で定義するか、年齢などの数値であればintvalなどでもよいです。

全体像

これらをまとめると以下のようになります。

// セッティングAPIを使ってみよう
add_action( 'admin_init', 'nskw_ogp_settings' );
function nskw_ogp_settings() {

	// セクションを登録
	add_settings_section(
		'ogp_settings',
		__( 'OGP Settings', 'nskw-ogp-generator' ),
		'nskw_add_settings_section',
		'media'
		);

	// フィールドを登録
	add_settings_field(
		'ogp_img_field',
		__( 'Default Image', 'nskw-ogp-generator' ),
		'nskw_ogp_img_field',
		'media',
		'ogp_settings'
		);

	// nameを登録して保存されるようにする
	register_setting( 'media', 'ogp_img_field', 'esc_url' );

}

// セクション用の関数
function nskw_add_settings_section() {
	_e( 'This image will be used in home page, archive pages and posts/pages which don\'t have post thumbnails', 'nskw-ogp-generator' );
}

// ogp-img-field用の関数
function nskw_ogp_img_field() {
	?>
	<input id="ogp_img_field" name="ogp_img_field" type="text" value="<?php form_option('ogp_img_field'); ?>" />
	<?php
	printf(
		__( 'Url of the default image. At least 600x315 pixels, but it\'s better to have a bigger one.<br />You can upload your image <a href="%s" target="_blank">here</a>', 'nskw-ogp-generator' ),
		admin_url( 'media-new.php' )
	);

}

これまでに説明していないのは2つのコールバック関数です。一つ目がセクションに登録した文章を出力するだけのもの、2つ目はinputを出力している部分です。inputのname要素は、register_settingフィールドで登録した名前にします。

また、textフィールドのvalueにあるform_option()というのは、オプションのキーを指定するとフォーム用にサニタイズしてechoしてくれる関数です。

Settings APIを使って、設定>メディアの画面に、プラグインから保存用の画面を作ったところ。

Settings APIを使って、設定>メディアの画面に、プラグインから保存用の画面を作ったところ。

以上です。

↓ プラグインを作る方々への本、書きました。 ↓

WordPress JSON REST API メモ

メモです。

ドキュメント

WP API Documentation

チュートリアル

Introduction to the JSON REST APIIntroduction to the JSON REST API Part 2 。それと、Designing a class: WordPress API client | The Man in the Arena も。

あとこちら。
Learn to build a WordPress App collaboratively| Part 1 Roy Sivan

ドキュメントのサイトにも、 WP REST API Documentation がある。

↓ プラグインを作る方々への本、書きました。 ↓

WordPressでajaxの基本的なやり方

WordPressに備わっているajaxについて、手順などをまとめます。もっといい方法、や修正などあったら教えてくださいましな。

今回作ったのは、タクソノミーによる絞込の検索フォームを作成する際に、階層を持つタクソノミーのドロップダウンを2つ用意して、親ターム選択用のドロップダウンでタームが選択されたら、子タームが取得されてもうひとつのドロップダウンの内容が変わる、というものです。

スクリーンショット 2014-08-25 19.32.43

意図する動き

どのように動くのか。

  1. ひとつめのドロップダウンで、タームが選択される
  2. ひとつめのドロップダウンで選択されたタームのIDがWordPressに送信される
  3. タームのIDを受け取ったWordPressが、そのIDのタームの子タームのIDと名前をjsonで返す
  4. IDとタームを受け取ったら、ふたつめのドロップダウンのoptionを書き換える

親タームが選択された、というイベントをきっかけとして、WordPressに親タームのIDを送信して、WordPressからはその親を持つ子タームのIDと名前をjsonで返す、戻ってきたjsonデータをもとに、optionを書き換える、という流れになります。

Continue reading

↓ プラグインを作る方々への本、書きました。 ↓

Rewrite APIその2 WordPressでアプリを作る基本(WordPressプラグイン開発のバイブルのボツ原稿から)

WordPressプラグイン開発のバイブルという本がありまして、大絶賛大好評販売中なのですが、ボツ原稿を載せていくシリーズの、Rewrite APIの第二弾です。

書籍のご購入はこちらから。

前回の記事は、Rewrite APIその1 「Rewriteとパーマリンク」(WordPressプラグイン開発のバイブルのボツ原稿から)です。

前回のまとめをさくっと言いますと、WordPressにはパーマリンクという機能があり、カテゴリや日付、ポストIDやpostnameなどを組み合わせて、URLの構造を設定できますが、その機能はウェブサーバーのリライト機能とWordPressのリライト機能が組み合わさって実現されているということでした。

このことは、WordPressプラグイン開発のバイブルの中の第六章「WordPressのデータ構造とクエリを理解する」という章の中でも詳しく解説されていますので読んでみてくださいね。

Rewrite APIを利用することでWordPressをブログでもCMSでもなくアプリケーションプラットフォームとして活用する方法の第一歩でございますですよ。

では、以下、コピペになります。前回同様、校正前のものになります。誤字脱字、間違いはご連絡くださいな。

Continue reading

↓ プラグインを作る方々への本、書きました。 ↓

« Older posts