在页面中显示数据的元数据

时间:2013-10-07 作者:dardar.moh

我在页面管理中创建了一个metabox,它有一个textarea,因此在验证数据是否保存后,它不会显示在页面(主题)中,我希望我能很好地解释我的问题。

这是我的代码:

<?php



add_action(\'add_meta_boxes\',\'dar_meta_create\');

function dar_meta_create()
{
    add_meta_box(  
        \'dar_meta\', // $id  
        \'metabox dardar\', // $title   
        \'dar_meta_function\', // $callback  
        \'page\', // $page  
        \'normal\', // $context  
        \'high\');
}

// callback

function dar_meta_function($post)
{
    wp_nonce_field(basename(__FILE__), \'dar_nonce\');


    // get value of text area
    $shortcode = get_post_meta($post->ID,\'_shortcode\',true);
    echo 
    \'<textarea name="_shortcode" id="_shortcode">\'.wp_kses_post($shortcode).\'</textarea>\';
}

// save meta box



function dar_meta_save($id,$post)
{

// check the autosave
    if (defined(\'DOING_AUTOSAVE\') && DOING_AUTOSAVE)  
        return $id; 

    if (
        \'page\' == $post->post_type
        && current_user_can(\'edit_page\', $id)
        && wp_verify_nonce($_POST[\'dar_nonce\'], basename(__FILE__))
        && isset($_POST[\'_shortcode\'])
    ) update_post_meta($id, \'_shortcode\', strip_tags($_POST[\'_shortcode\']));


}
add_action(\'save_post\',\'dar_meta_save\');
谢谢你。

2 个回复
最合适的回答,由SO网友:tfrommen 整理而成

到目前为止,您发布的只是后端功能。

在前端,您必须主动显示数据,就像在后端一样。

像这样:

// assuming you\'re in the Loop on your INDIVIDUAL page template
echo wp_kses_post(get_post_meta(get_the_ID(), \'_shortcode\', true));
如果没有单独的模板文件,则必须检查页面ID,例如。

// assuming you\'re in the Loop on your GENERAL page template
if (is_page(YOUR-PAGE-ID))
    echo wp_kses_post(get_post_meta(get_the_ID(), \'_shortcode\', true));

SO网友:Imperative Ideas

您已经在后端添加了metabox,并将元数据保存到数据库中,这实际上是大多数人的难点。尽管如此,您还没有编写任何显示代码。您可能应该在Codex中查看get\\u post\\u custom()及其相关方法。

http://codex.wordpress.org/Custom_Fields

数据就在那里,您只需将其输出到模板。

结束

相关推荐

WordPress:可排序的Metabox字段不保存位置

我遇到了一个让我困惑的问题:升级到WP 3.6后,当您重新订购时,我的可排序metabox字段没有保存它们的位置。下面是我的代码:PHP:function save_box( $post_id ) { $post_type = get_post_type(); // verify nonce if ( ! isset( $_POST[\'custom_meta_box_nonce_field\'] ) ) return $p