我在页面管理中创建了一个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\');
谢谢你。
最合适的回答,由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));