2015-12-29 67 views
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) 「」

我大概做了錯誤的部分代碼負責保存部分,但無法弄清楚究竟是什麼。

回答

0

好吧,所以我用你的自定義帖子類型弄了一下,它適用於我。

我創建了一個頁面模板來輸出poslovi-newsletter帖子類型的所有帖子。 PHP的一部分是這樣的:

<?php 
$args = array(
    'post_type' => 'poslovi-newsletter', 
    'posts_per_page'=>-1, 
); 
$posts = new WP_Query($args); 
$out = ''; 
if ($posts->have_posts()){ 
    while ($posts->have_posts()){ 
     $posts->the_post(); 

     $meta = get_post_meta($post->ID); 

     $out.= '<div class="test">'.$meta['meta-textarea'][0].'</div>'; 
    } 
} 
else{ 
    echo '<p>' . __('No Posts Found.') . '</p>'; 
} 
?> 

<?php echo $out;?> 

所以您的文章meta值是有,尤其名爲meta-textarea關鍵的數組,並在該鍵的值是具有與單個鍵的數組你想要的值

Array (
    [meta-textarea] => Array ( 
         [0] => Tessst 
        ) 
) 

我已經鍵入'Tessst'來檢查它是否工作。

希望這會有所幫助:)

相關問題