php – WordPress add_meta_box()奇怪
发布时间:2020-12-13 16:31:32 所属栏目:PHP教程 来源:网络整理
导读:下面的代码工作几乎完美无缺,但是我的一个页面上的页面标题的价值在几页刷新后仍然空白…它坚持了一段时间,然后似乎重置为空.我想我下面的代码中必须有一个冲突,但我不太清楚. 我允许用户通过自定义的“帖子/页面标题输入字段”为帖子和页面设置自定义页面标
下面的代码工作几乎完美无缺,但是我的一个页面上的页面标题的价值在几页刷新后仍然空白…它坚持了一段时间,然后似乎重置为空.我想我下面的代码中必须有一个冲突,但我不太清楚.
我允许用户通过自定义的“帖子/页面标题输入字段”为帖子和页面设置自定义页面标题.任何人都可以看到一个明显的问题,可能是将页面标题重置为空白? // =================== // = POST OPTION BOX = // =================== add_action('admin_menu','my_post_options_box'); function my_post_options_box() { if ( function_exists('add_meta_box') ) { //add_meta_box( $id,$title,$callback,$page,$context,$priority ); add_meta_box('post_header','Custom Post Header Code (optional)','custom_post_images','post','normal','low'); add_meta_box('post_title','Custom Post Title','custom_post_title','high'); add_meta_box('post_title_page','page','high'); add_meta_box('postexcerpt',__('Excerpt'),'post_excerpt_meta_box','core'); add_meta_box('categorydiv',__('Page Options'),'post_categories_meta_box','side','core'); } } //Adds the custom images box function custom_post_images() { global $post; ?> <div class="inside"> <textarea style="height:70px; width:100%;margin-left:-5px;" name="customHeader" id="customHeader"><?php echo get_post_meta($post->ID,'customHeader',true); ?></textarea> <p>Enter your custom html code here for the post page header/image area. Whatever you enter here will override the default post header or image listing <b>for this post only</b>. You can enter image references like so <img src='wp-content/uploads/product1.jpg' />. To show default images,just leave this field empty</p> </div> <?php } //Adds the custom post title box function custom_post_title() { global $post; ?> <div class="inside"> <p><input style="height:25px;width:100%;margin-left:-10px;" type="text" name="customTitle" id="customTitle" value="<?php echo get_post_meta($post->ID,'customTitle',true); ?>"></p> <p>Enter your custom post/page title here and it will be used for the html <title> for this post page and the Google link text used for this page.</p> </div> <?php } add_action('save_post','custom_add_save'); function custom_add_save($postID){ if (!defined('DOING_AUTOSAVE') && !DOING_AUTOSAVE) { return $postID; } else { // called after a post or page is saved and not on autosave if($parent_id = wp_is_post_revision($postID)) { $postID = $parent_id; } if ($_POST['customHeader']) { update_custom_meta($postID,$_POST['customHeader'],'customHeader'); } else { update_custom_meta($postID,'','customHeader'); } if ($_POST['customTitle']) { update_custom_meta($postID,$_POST['customTitle'],'customTitle'); } else { update_custom_meta($postID,'customTitle'); } } } function update_custom_meta($postID,$newvalue,$field_name) { // To create new meta if(!get_post_meta($postID,$field_name)){ add_post_meta($postID,$field_name,$newvalue); }else{ // or to update existing meta update_post_meta($postID,$newvalue); } } ?>
WordPress的自动保存系统可能是您的问题,因为我认为自定义字段不会传递给自动保存(所以您的customHeader和customTitle post变量在自动保存期间将为空).
在您的保存功能中,您应该检查是否设置了DOING_AUTOSAVE常量(这似乎比检查帖子操作更合适),如果是这样,返回.这样的事情 if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return; 更多信息请看这张票:http://core.trac.wordpress.org/ticket/10744 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |