カスタムポストタイプにカラーメタボックスを追加するための小さなプラグインを作成しました。ボックスは正常に表示されますが、データを保存することはできません。フィールドに何かを入力して「更新」をクリックすると、フィールドは空白に戻ります。私はこれを研究し、多くのチュートリアルに続き、それぞれが少しずつ異なるアプローチを提案しました。以下のコードは私にとって一番簡単なものでしたので、私は本当にその中のエラーを特定する助けに感謝します。これは私の最初の質問ですので、私は関連するものは省略して申し訳ありません。Wordpressのカスタムメタボックスが更新されていません - この関数のエラーを特定するのに役立つ必要があります
add_action('add_meta_boxes', 'addmeta');
function addmeta() {
$post_types = array ('post', 'ev');
foreach ($post_types as $post_type) {
add_meta_box (
'color_box',
'Color',
'display_meta_box',
$post_type,
'side'
);
}
}
add_action ('add_meta_boxes', 'addmeta');
機能は、メタボックスを表示するには:ここで
は、私はボックスを追加する方法です
function display_meta_box() {
$value = get_post_meta($post->ID, '_mykey', true);
wp_nonce_field(basename(__FILE__), 'my_nonce');
?>
<label for="color_box"><strong>Color:</strong> </label>
<input type="text" name="my_text" id="my_text" />
<?php
}
をそして、これは、保存機能である:
function save_meta_box ($post_id) {
$is_autosave = wp_is_post_autosave($post_id);
$is_revision = wp_is_post_revision($post_id);
$wp_valid_nonce = false;
if(isset($_POST[ 'my_nonce' ])) {
if (wp_verify_nonce($_POST['my_nonce'], basename(__FILE__))) {
$is_valid_nonce = true;
}
}
if ($is_autosave || $is_revision || !$is_valid_nonce) return;
if(array_key_exists('color_box', $_POST)) {
update_post_meta(
$post_id,
'_mykey',
sanitize_text_field($_POST[ 'color_box' ])
);
}
}
add_action('save_post', 'save_meta_box');
ありがとうございます!
Aftab Husainが投稿したのと同じ回答を投稿したと思います。 –
いいえ! ) –
私はAftab Husainのコードを改善しました –