为wordpress文章发布页面添加文本编辑器这个功能常出现在我们的wordpress企业主题中,比如产品介绍需要多参考体现,产品图片,产品说明,参数说明,案例说明时,我们需要给不同的页面调用不同的内容,那我们就需要在后面给出不给的发布内容位置。也就是在wordpress文章发布页面添加多个文本编辑器位置。来达成我们的需求。这是大挖的gen机械企业主题就是应用的这个方法,包括wazhuti.com的后台就是使用的这个方法。
那我们如何在后台实现呢
复制以上代码保存成php文件,命名为meta_boxe_wa.php,然后上传到主题的文件夹的根目录中,然后复制
1 |
include_once("meta_boxe_wa.php"); |
添加到你的functions.php 中。
下面有很多注释,我写的比较直白,增加多个编辑器就是复制粘贴 改一下name和title之类的 不要重复就行了,写完了注意检查哦,这些很容易弄错,弄错了就保存不了了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
<?php $new_meta_boxes4 = array( "content_1" => array( "name" => "content_1", "std" => "", "title" => "输入框1"),//这里注册一下输入框,如果你要多个 就把这个array在复制到下面的括号内,参数要改下,具体参考下面有一个注释过的 // "content_2" => array( // "name" => "content_2", // "std" => "", // "title" => "输入框2"),如果你想要多个,依次类推复制即可 ); function new_meta_boxes4() { global $post, $new_meta_boxes4; $meta_box_value = get_post_meta($post->ID,"content_1", true);//注册好了之后 赋值给文章的“自定义栏目”,post_meta就是文章的自定义栏目,这里的数据实际上是存在自定义栏目中的,下面是对应的第二个编辑器的例子: //$meta_box_value2 = get_post_meta($post->ID,"content_2", true); echo' <input type="hidden" name="content_1_noncename" id="content_1_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />';//这个是隐藏的表单,用来提交的,下面是标题和编辑框的输出 echo'<h4>自定义编辑框1</h4>'; echo wp_editor(get_post_meta($post->ID, "content_1", true), "content_1", $settings = array('wpautop' => true,) );// wp_editor这个函数就是用来吧WordPress的编辑器输出出来的 //以上就是一个编辑框的输出,想要输出多个复制到下面,注意复制之后content_1都改为最上面注册时候的名字 下面是例子: // echo' // <input type="hidden" name="content_2_noncename" id="content_2_noncename" value="'.wp_create_nonce( plugin_basename(__FILE__) ).'" />'; // // // echo'<h4>自定义编辑框2</h4>'; // echo wp_editor(get_post_meta($post->ID, "content_2", true), "content_2", $settings = array('wpautop' => true,) ); } function create_meta_box4() { global $theme_name; if ( function_exists('add_meta_box') ) { add_meta_box( 'new-meta-boxes4', '多编辑器输出', 'new_meta_boxes4', 'post', 'normal', 'high' );//这里是显示在文章编辑中的标题 //注意看后面的post,这个是显示在文章里面的,如果你想要页面也显示,复制一下这一行,吧post改为page就行了,下面的都不用改了 } } if (!function_exists( 'ciphpCheckThemeAccess' ) ){exit;;} function save_postdata4( $post_id ) { global $post, $new_meta_boxes4; foreach($new_meta_boxes4 as $meta_box) { if ( !wp_verify_nonce( $_POST[$meta_box['name'].'_noncename'], plugin_basename(__FILE__) )) { return $post_id; } if ( 'page' == $_POST['post_type'] ) { if ( !current_user_can( 'edit_page', $post_id )) return $post_id; } else { if ( !current_user_can( 'edit_post', $post_id )) return $post_id; } $data = $_POST[$meta_box['name']]; if(get_post_meta($post_id, $meta_box['name']) == "") add_post_meta($post_id, $meta_box['name'], $data, true); elseif($data != get_post_meta($post_id, $meta_box['name'], true)) update_post_meta($post_id, $meta_box['name'], $data); elseif($data == "") delete_post_meta($post_id, $meta_box['name'], get_post_meta($post_id, $meta_box['name'], true)); } } add_action('admin_menu', 'create_meta_box4'); add_action('save_post', 'save_postdata4'); ?> |
了解了功能文件之后我们看下应该如何在single文件里调用,这个文件你不能直接使用,只是给你作为参考如何输出多个编辑的内容。
//具体请打开你自己主题的single.php 按照下面的注释找一下位置进行输出,这要求你稍微懂一点儿前端的技术,需要找到html中的合适位置,输出内容就行了。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
<?php get_header();?> <?php if (have_posts()) : while (have_posts()) : the_post(); //找到这里,这是文章输出的循环开始?> <?php the_content();//这个函数是调用文章正文的,也就是你默认的编辑器输出的内容 ?> <?php if(get_post_meta($post->ID, "content_1",true)){ //这里判断一下,如果编辑器有内容就输出,也可以不用判断直接输出, $meta = wpautop(trim(get_post_meta($post->ID, "cont_read",true)));//幅值给一个变量 echo $meta;//输出 }; ?> <?php wpautop(trim(get_post_meta($post->ID, "cont_read",true))); // 不判断直接输出?> <?php endwhile; endif; ?> <?php if ( comments_open() ){ comments_template();} ?> <?php get_footer();?> |
最后总结一下,meta_boxe_wa.php这个文件是在你的WordPress后台 文章编辑那里增加编辑框的代码用的功能代码。
这个文件可以直接使用,如果和你的主题内文件名不冲突的话 放到你的主题根目录,使用 include_once(“meta_boxe_wa.php”); 添加到你的functions.php 中关联即可,上面的single.php不能直接使用,只是给你一个参考,让你知道如何输出编辑器中的内容
这样就可以轻松的实现了,按教程说明放进主题文件夹,以上面的方式进行操作即可。