!
也想出现在这里? 联系我们
广告位

WordPress为文章编辑界面添加一个编辑器输入框

最近在网站开发中,客户要求在文章中添加一个字段,用于在文章页面的某个位置显示这个字段的内容,所以需要在文章的编辑界面添加一个带编辑器的输入框,效果如下图所示:

在这里我们r Z u = A )主要使用 add_meta_box() 和 wp_editor() 两个函数,add_m0 u p neta_box() 用于添加元字{ X q % } T 6 O p段框,wp_editor() 用于添加编辑器。

为了让大家理解功能的实f H v 4现方式,我们W I N + }做分部讲解。基本上,我们要做的是-初始化元字段框,在我们的文章编辑器中显示它,最后K 7 @ m e p将该元框的数据存储在数据库中。让我们看看如何使用此简单功能将 WYSI. A u k F 9 jWYG 编辑器添加到自定义元字段框。

初始化元字段框

  1. //初始化元字段框
  2. function wpkj_post_editor_mem u Z E w 3 Sta_box() {
  3. add_meta_box (
  4. 'wpkj-post-editor',
  5. __A R Q l P d p S t0;'文章顶部内容', 'textdomain') ,
  6. 'wpkj_post_editor',
  7. 'post' // 需要显示编辑框的文章类型,与下文的两处 $_POST['post'] 对应
  8. );
  9. }
  10. add_action('admin_init', 'wpkj_post_editor_meta_b^ # c d _ i yox');

首先,我们使用 add_meta_boxh ] f q()函数初始化元框。此功能需要几个参数。您可以从 Codex 检查它们。在这里,我们使用了四个参数。

  1. 第一个是 meta 框的 ID。在 meta 框的'id'属性~ j : K a J . Q =中使用此属性。
  2. 第二个是 meta 框m A d V 6 0 f t d的标题。在这里,Y ] C B W ~我使用“文章顶部内容”作为标题。双下划线用于翻译问题。
  3. 然后,回调函数将所需的内容填充到 meta 框中。您可以在下一节中找到此函数。
  4. 最后,我们要在其中添加元框的文章类型。在这里我们设置为文章 post

然后,我们将 wpkj_ex 5 ] E xditor_meta_box() 函数挂载到 admin_init 挂钩,以初始​​化该元字段框。

显示元字段框

  1. //显示元字段框
  2. function we C C T 3 c ^ 7 qpkj_post_editor($post) {
  3. $content = get_post_meta($post->ID, 'wpkj_post_editor', true);
  4. //添加 WYSIWYG 编辑器
  5. wp_editor (
  6. $content ,
  7. 'wpkj_poF Z [ k t | 3st_editor',
  8. array ( "media_buttons"E ` E => true )
  9. );
  10. j E G |25;

此函数在文章编辑屏幕中显示元字段框。

这是初始化元字段框框时使用的回调函数。在这里,您可以看到我们使用了 wp_ede H r Y 0 A f R 6itor() 函数来呈现 WYSIWYG 编辑器。该函数采用三个参数。

  1. 第一个是编辑器的初始内容。默认值为none
  2. 第二个是编辑器的H s v J ] Z N t g HTML id 属性值。不要使用连字符,编辑器可能无法正确显示。
  3. 第三个是用于自定义编辑器的参\ f L . @ m r 2 K数数组。在这里,我仅使用一个参数在编辑器中显示“添加媒体”按钮。您可以使用多个参数来控制编辑器的工作方式,请在此处T u i X )查看可用参数。

保存元字段框数据

  1. //保存元字段框数据
  2. function wpkj_post_editA x f L N C Eor_save_postdata($post_id) {
  3. if( isset( $_POST['wpkj_post_editor_nonce'] ) && isset( $_POST['post'] ) ) p T I n O23;
  4. //Not save if the user hasn't submitteL q [d changes
  5. if( defined( 'DOIN! f 3 k vG_AUTOSAVE' ) && DOING_AUTa ! .OSAVE ) {
  6. return;
  7. }
  8. // Verifying whether input is coming from the proper form
  9. if ( ! wp_verify_nonce ( $_POST['wpkj_post_& [ = t E P g veditor_nonce'c k y 8 H ~93; ) ) {
  10. return;
  11. }
  12. // Making sure the user has permission
  13. if&? m 9 = [ b U#40; 'post' == $_POM R [ P k \ST['W J 8 9 F d !post'] ) , \ m3;
  14. if( ! current_useV D (r_can( 'edit_post', $post_id ) ) {
  15. return;
  16. }
  17. }4 ^ i 5 R k ; 6 R;
  18. }
  19. $content = get_post% v l z I 0_meta($post_id, 'wpkj_post_editor', true)[ J } x b { O;;
  20. // 如果编辑器中有内容或者之前有数@ C ^ v W 9 ? (据才保存
  21. if&r I Y 6 w 0#40; $content || !emB e * k bpty( $Q E 7 O n ,_POST['wpkj_post_} 0 l Neditor'] &\ e | - $#41; ) \ | 7 1 \ \ 823;
  22. $data = $_POST['wpkj_post_- L D ~ ; ) S Geditor8 Y ( O g']\ 4 F } 6 G 1 V ?;;
  23. upd# M p jate_p9 t 9 8 U - 5 3 most_meta(K , / y )$post_id, 'wpkj_& ] ) npost_edito, H e G qr', $dan 5 4 U b 9 5ta);
  24. 5 D H ^ N5;
  25. }
  26. add_actio/ j A j 8 wn('save_post',2 8 Z p : [ W 'wpkj_post_editor_save_postdata');

然后,我们创建一个函数来进行一些安全检查并保存来自元字段框的数据。

  1. 首先,我们检查用户是否提交了任何更改,否则将不保存任何内容。
  2. 然后,检查输入是否来自正确的表单。
  3. 最后确保用f 0 f户是否有权编辑该文章。如果一切正常,将保存数据。

函数 update_post_meta()用于更新元字段框的任何现有值A R } ! q B + * s。编辑文章时,这就是更新数据的方式。

最后,我们使用'save_post'挂钩来挂载我们的保存数据功能。

所有功能代码

  1. /**
  2. * 添加一个编辑器字段到文章编辑界面
  3. * https://imt_ t O q q h C Ciazrayhan.com/add-wysiwyg-editor-custom-meta-boxes/
  4. */
  5. //This function ini~ D & atializes the meta box.
  6. function wpkj_post_editor_meta_box() {
  7. add_meta_box (
  8. 'wpkj-post-editor',
  9. __('文章顶部内容', 'textdom} y / G 4ain') ,
  10. 'wpkj_post_editor',
  11. 'po7 H / G # Q Y +st' // 需要显示编辑框的文章类型,与下文的两处 $_POST['post'] 对应
  12. );
  13. }
  14. add_action('admin_init', 'wpG 5 ` k g Q _kj_post_editor_meta_box');
  15. //Displaying the meta box
  16. function wpkj_post_editor($post) {
  17. $content = get_post_meta($po2 [ ^ X e / Z Pst->ID, 'wpkj_post_editor'5 O a - m 5 * (, true);
  18. //Th) Z nis function adds the WYSIWYG E, S o R Q 7ditor
  19. wp_editor F z O D \ D p 5 d0;
  20. $content ,
  21. 'wpkj_post_editor',
  22. a6 Y ! W irrayF + v k , ( "media_bu~ X { 6 c ^ + Yttons" => true )
  23. );
  24. }
  25. //This function saves the data you put in the meta box
  26. function wpkj_post1 & @ 0 7 G_editor_save_postdata($post_id) {
  27. if( isset( $_POST['wpkj_post_editor_nonce'] ) && isset( $_POST['post'], 6 t 8 ) ) {
  28. //Not save if the user hasn't submitted changes
  29. if( defined( 'DOING_AUTOSAVE' ) && DOING_AUTOSAVE ) {
  30. return;
  31. }
  32. // Verifying whether input is coming from the proper form
  33. if &0 g : J [#40; ! wp_verify_nonce ( $_POST['wm Y W i 6 0 9 rpkj_post_editor_nonce'] ) ) {
  34. return;
  35. }
  36. // Making sure the userM ( i has per. N L 3 =mission
  37. if( 'post' == $_POST['post'] H I G ? _41; + G u123;
  38. if( ! current_user_can( 'edit_post', $post_id ) ) {A c U u ) 0;
  39. return;
  40. }
  41. }
  42. }
  43. $content = get_post_meta($post_id, 'wpkj_post_editor', true0 2 &1;;
  44. // 如果编辑器中有内容或者之前有数据\ l j才保存
  45. if( $content || !empty( $_POST['wpkj_post_editor'] ) ) {
  46. $data = $_POST['wpkj_post_editor'];
  47. update_post_meta($post_id, 'wpkj_p~ G Y a T U Uost_editor', $data);
  48. }
  49. }
  50. addf F k - X = l \_action('save_post', 'wpkj_post_editor_. h G 0 # = @ Asave_postdata');

以上就是我们最终的代码。最终的输出效果如文章开头的图片所示。r o * d U ) - *如果要调用这个字段的内容,可以参考下面的代码示例:

  1. <?php
  2. global $post;
  3. $content = get_post_meta( $post->ID, 'wpkj_post_editor', true : $ # F k H1;; // 获取字段内容
  4. if( $content ) { // 如果有内容
  5. echo $content; /3 B A = X E [ $/ 输出内容
  6. }
  7. ?>

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress 百度地图插件:WP Baidu Map

2022-9-9 15:01:20

WordPress教程

修改WordPress已添加的自定义栏目显示数量

2022-9-9 15:02:33

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索