4
我無法從自定義帖子類型的metabox中獲取值。WordPress - 無法從自定義帖子類型的metabox中獲取價值
這裏是我的自定義後類型註冊metabox:
register_post_type('poslovi-newsletter',
array(
'labels' => array(
'name' => __('Poslovi newsletter'),
'hierarchical' => false,
'singular_name' => __('Posalji newsletter')
),
'public' => true,
'exclude_from_search' => true,
'menu_icon' => 'dashicons-email',
'register_meta_box_cb' => 'add_bez_oznaka_text_metabox'
)
);
這是我處理如何顯示在儀表板中的自定義後類型metabox,保存數據,等等
function add_bez_oznaka_text_metabox() {
add_meta_box('poslovi_newsletter_meta', 'Tekst mejla za korisnike bez oznaka', 'bez_oznaka_textarea', 'poslovi-newsletter', 'normal', 'default');
}
add_action('add_meta_boxes', 'add_bez_oznaka_text_metabox');
function bez_oznaka_textarea($post) {
wp_nonce_field(basename(__FILE__), 'poslovi_newsletter_nonce');
$poslovi_newsletter_stored_meta = get_post_meta($post->ID);
?>
<p>
<label for="meta-textarea" class="poslovi_newsletter-row-title"><?php _e('Tekst mejla', 'poslovi_newsletter-textdomain')?></label>
<textarea name="meta-textarea" id="meta-textarea" style="width: 100%; min-height: 200px;"><?php if (isset ($poslovi_newsletter_stored_meta['meta-textarea'])) echo $poslovi_newsletter_stored_meta['meta-textarea'][0]; ?></textarea>
</p>
<?php
}
function poslovi_newsletter_meta_save($post_id) {
// Checks save status
$is_autosave = wp_is_post_autosave($post_id);
$is_revision = wp_is_post_revision($post_id);
$is_valid_nonce = (isset($_POST[ 'poslovi_newsletter_nonce' ]) && wp_verify_nonce($_POST[ 'poslovi_newsletter_nonce' ], basename(__FILE__))) ? 'true' : 'false';
// Exits script depending on save status
if ($is_autosave || $is_revision || !$is_valid_nonce) {
return;
}
// Checks for input and saves if needed
if(isset($_POST[ 'meta-textarea' ])) {
update_post_meta($post_id, 'meta-textarea', $_POST[ 'meta-textarea' ]);
}
}
add_action('save_post', 'poslovi_newsletter_meta_save');
現在,這一切工作正常。當我添加新帖子並輸入數據時,它會保存該數據的帖子。例如,當我發佈var_dump文章時,我會看到所有內容,標題,日期等,但我沒有看到任何元數據。
此外,當我這樣做(讓我們說,我想從後元數據與ID 37422)
$meta_value = get_post_meta(37422, 'meta-textarea', true);
var_dump($meta_value);
我得到的vlaue:字符串(0) 「」
我大概做了錯誤的部分代碼負責保存部分,但無法弄清楚究竟是什麼。