カスタムフィールドの取得・表示およびカスタマイズの覚書。
カスタムフィールドの値はpostmetaテーブル[1]に格納される。
the_meta関数は引数を指定せずループ内で使用する。登録済みのキー・値をulでマークアップし表示する。
<?php the_meta(); ?>
<ul class="post-meta">
<li><span class="post-meta-key">key2:</span> 値2</li>
<li><span class="post-meta-key">key1:</span> 値1</li>
</ul>
post_custom関数は引数に指定したキーに対応する値を文字列(または配列)として返す。
// key1に設定した値の表示
<?php if(have_posts()) : while(have_posts()) : the_post(); ?>
<?php echo post_custom('key1'); ?>
<?php endwhile; endif; ?>
» カスタムフィールドの指定したキーの値だけ表示する方法 | btmup Blog
get_post_meta関数は投稿IDとキーを指定し値を取得する。get_post_meta($post_id, $key, $single)関数は3つの引数をとりループ内・ループ外の両方で使用できる。
指定したキーが存在しないときは空文字を返す
例:記事ID=1に設定されたキー=key1の値を取り出す(key1は重複して登録していないと仮定する)。
<?php echo get_post_meta('1’,'key1', true); ?>
例:全ての記事にキーを設定しておりテーマのループ内で呼び出す。
<?php echo get_post_meta($post->ID, ‘key1’, true); ?>
同じ名前のキーが複数ある場合に$singleにFALSEした結果は配列 Arrayを返す。そのためforeachなどのループを用いて各要素を表示する処理が必要になる。
function.phpでカスタムフィールドをカスタマイズすることがでる。
» 関数リファレンス/add meta box – WordPress Codex 日本語版
// カスタムフィールド
add_action('admin_menu', 'example_meta_box');
add_action('save_post', 'example_meta_update');
function example_meta_box($post){
add_meta_box('example_meta', 'カスタマイズの例', 'example_meta_callback', 'post', 'normal', 'high');
}
function example_meta_callback($post, $box){
// カスタムフィールドの値を取得
$field1 = get_post_meta($post->ID, 'field1', true);
$field2 = get_post_meta($post->ID, 'field2', true);
//
echo wp_nonce_field('example_meta', 'my_meta_nonce');
// 入力域
echo 'フィールド1 : <input type="text" name="field1" value="' . $field1 . '" /><br />';
echo 'フィールド2 : <input type="text" name="field2" value="' . $field2 . '" />';
}
// 保存処理用コールバック関数
function example_meta_update($post_id){
if (!wp_verify_nonce( $_POST['my_meta_nonce'], 'example_meta')) {
return $post_id;
}
if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
return $post_id;
}
if ('post' == $_POST['post_type']) {
if(!current_user_can('edit_post', $post_id)) {
return $post_id;
}
} else {
return $post_id;
}
$field1 = $_POST['field1'];
$field2 = $_POST['field2'];
if(isset($field1)) {
update_post_meta($post_id, 'field1', $field1);
}
if(isset($field2)) {
update_post_meta($post_id, 'field2', $field2);
}
}
» 関数リファレンス/update post meta – WordPress Codex 日本語版
この関数はまず、$post_id で ID を指定した投稿に $meta_key を持つカスタムフィールドが存在することを確認します。もし存在しなければ代わりに add_post_meta($post_id, $meta_key, $meta_value) を実行し、その結果(常に true)を返します。
» 関数リファレンス/delete post meta – WordPress Codex 日本語版
» 関数リファレンス/wp nonce field – WordPress Codex 日本語版
» 関数リファレンス/wp verify nonce – WordPress Codex 日本語版
1. デフォルトはプリフィックスwpがついてwp_postmetaとなる。
2. 同じ投稿・ページ内でキーは重複してよい。
[…] https://findxfine.com/programming/wp/995551883.html この情報との関連記事 […]
[…] FindxFine […]
改行と段落タグは自動で挿入されます。
メールアドレスは表示されません。