【Wordpressテーマ作成】Wordpressの編集画面右側のツールバーに項目を追加する方法
メタボックスという名前
あのサイドバーの部分の名前ってあまり知られていないと思うのですが、メタボックスと言います
wordpress サイドバー 編集画面
などで調べても、管理画面の編集方法しか出てこないので、そうじゃないんだという人向けの記事です
デフォルトで用意されたメタボックスの使用
add_theme_support
という関数であらかじめ用意されたメタボックスを使うことができます
add_theme_support("項目名", "オプション")
という感じで使えます
オプションはなくても問題ないです
項目 | 詳細 |
---|---|
post-formats | aside 、gallery 、image 、link 、quote 、status 、video 、audio 、chat があり複数選択可能詳細 |
post-thumbnails | オプションにarray("post", "movie") など追加してページや投稿のサムネを設定できるようになります |
custom-background | 色、画像、関数などを設定できます |
custom-header | 画像、ランダム設定、横幅、縦幅、Flexの設定、テキストの色など設定できます |
automatic-feed-links | 投稿とコメントのRSSフィードのリンクを有効にします、Version3.0以降なら使えます |
html5 | コメントフォーム、検索フォーム、コメントリスト、ギャラリーでHTML5で書けるようになります |
title-tag | Version4.1以降で使えます |
admin-bar | |
align-wide | |
core-block-patterns | |
custom-line-height | |
custom-logo | |
customize-selective-refresh-widgets | |
custom-spacing | |
custom-units | |
dark-editor-style | |
disable-custom-colors | |
disable-custom-font-sizes | |
edit-style | |
editor-color-palette | |
editor-gradient-presets | |
editor-font-sizes | |
editor-styles | |
featured-content | |
widgets | |
menus | |
responsive-embeds | |
starter-content | |
wp-block-styles | |
widgets-block-editor |
完成するもの
この記事で作成するのはシンプルなinputを持つメタボックスです
保存や更新をする設定までします
メタボックスの追加
functions.php
から操作します
テーマエディタを開いて、functions.php
がなければ作成してください
add_meta_box
という関数があるので、それを使います
<?php
// functions.php
function meta_box() {
add_meta_box(
"property_name",
__("Title", "property_name"),
"property_name_display",
"page",
"side",
"high"
);
}
add_action("add_meta_boxes", "meta_box");
?>
シンプルな例で行くとこれで設定できます
property_name_display
のところに書いた、関数の中で、表示する内容を変更します
<?php
// functions.php
function property_name_display() {
echo "<input type='text' name='meta_key' />";
}
?>
これで、メタボックスの中に入力欄が表示されます
更新されたらメタボックスを保存する
表示するだけでは、更新した内容が保存されません
更新ボタンが押された際に登録する方法をここでは記載します
更新ボタンが押された際に使われる関数(Hook)はsave_post
です
固定ページも投稿も同じです
<?php
// functions.php
function meta_box_save($id) {
if (array_key_exists("meta_key", $_POST)) {
return update_post_meta(
$id,
"meta_key",
$_POST["meta_key"]
);
} else {
add_post_meta(
$id,
"meta_key",
$_POST["meta_key"]
);
}
}
add_action("save_post", "meta_box_save");
?>
先ほどinputの中のname
で指定したmeta_key
を使って$_POSTの中から拾ってきます
meta_key
というIDですでに登録があれば、上書きをして、なければ作成します
更新した内容をメタボックスに表示する
まだ更新しても表示されません
inputのデフォルトの値として呼び出してあげます
<?php
// functions.php
function property_name_display() {
// ここを追加
$default = get_post_meta($post -> ID, "meta_key")[0];
echo "<input type='text' value='". $default ."' />";
}
?>
get_post_meta
で登録したメタデータを呼び出して、inputのvalueとして初期値を与えてやります
これで保存した内容が表示されるようになったので、完成です
参考
add meta box
add theme support
add post meta
add_theme_support