metabox.php 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. <?php
  2. function dw_guten_register_media_meta() {
  3. register_meta('post', 'media', array(
  4. 'show_in_rest' => true,
  5. 'type' => 'string',
  6. 'single' => true,
  7. 'sanitize_callback' => 'sanitize_text_field',
  8. 'auth_callback' => function() {
  9. return current_user_can('edit_posts');
  10. }
  11. ));
  12. }
  13. add_action('init', 'dw_guten_register_media_meta');
  14. function dw_guten_register_desc_meta() {
  15. register_meta('post', 'meta_desc', array(
  16. 'show_in_rest' => true,
  17. 'type' => 'string',
  18. 'single' => true,
  19. 'sanitize_callback' => 'sanitize_text_field',
  20. 'auth_callback' => function() {
  21. return current_user_can('edit_posts');
  22. }
  23. ));
  24. }
  25. add_action('init', 'dw_guten_register_desc_meta');
  26. function dw_guten_add_media_meta_box() {
  27. add_meta_box(
  28. 'dw_guten_post_options_metabox',
  29. 'Post Options',
  30. 'dw_guten_post_options_metabox_html',
  31. 'post',
  32. 'normal',
  33. 'default',
  34. array('__back_compat_meta_box' => true)
  35. );
  36. }
  37. add_action( 'add_meta_boxes', 'dw_guten_add_media_meta_box' );
  38. function dw_guten_add_desc_meta_box() {
  39. add_meta_box(
  40. 'dw_guten_post_options_metabox',
  41. 'Post Options',
  42. 'dw_guten_post_options_metabox_desc',
  43. 'post',
  44. 'normal',
  45. 'default',
  46. array('__back_compat_meta_box' => true)
  47. );
  48. }
  49. add_action( 'add_meta_boxes', 'dw_guten_add_desc_meta_box' );
  50. function dw_guten_post_options_metabox_html($post) {
  51. $field_value = get_post_meta($post->ID, 'media', true);
  52. wp_nonce_field( 'dw_guten_update_post_metabox', 'dw_guten_update_post_nonce' );
  53. ?>
  54. <p>
  55. <label for="dw_guten_media_metafield"><?php esc_html_e( 'Media URL', 'textdomain' ); ?></label>
  56. <br />
  57. <input class="widefat" type="text" name="dw_guten_media_metafield" id="dw_guten_media_metafield" value="<?php echo esc_attr( $field_value ); ?>" />
  58. </p>
  59. <?php
  60. }
  61. function dw_guten_post_options_metabox_desc($post) {
  62. $field_value = get_post_meta($post->ID, 'media', true);
  63. wp_nonce_field( 'dw_guten_update_post_metabox_desc', 'dw_guten_update_post_nonce' );
  64. ?>
  65. <p>
  66. <label for="dw_guten_desc_metafield"><?php esc_html_e( 'Meta Excerpt', 'textdomain' ); ?></label>
  67. <br />
  68. <input class="widefat" type="text" name="dw_guten_desc_metafield" id="dw_guten_desc_metafield" value="<?php echo esc_attr( $field_value ); ?>" />
  69. </p>
  70. <?php
  71. }
  72. function dw_guten_save_post_metabox($post_id, $post) {
  73. $edit_cap = get_post_type_object( $post->post_type )->cap->edit_post;
  74. if( !current_user_can( $edit_cap, $post_id )) {
  75. return;
  76. }
  77. if( !isset( $_POST['dw_guten_update_post_nonce']) || !wp_verify_nonce( $_POST['dw_guten_update_post_nonce'], 'dw_guten_update_post_metabox' )) {
  78. return;
  79. }
  80. if(array_key_exists('dw_guten_media_metafield', $_POST)) {
  81. update_post_meta(
  82. $post_id,
  83. 'media',
  84. sanitize_text_field($_POST['dw_guten_media_metafield'])
  85. );
  86. }
  87. }
  88. add_action( 'save_post', 'dw_guten_save_post_metabox', 10, 2 );
  89. function dw_guten_save_post_metabox_desc($post_id, $post) {
  90. $edit_cap = get_post_type_object( $post->post_type )->cap->edit_post;
  91. if( !current_user_can( $edit_cap, $post_id )) {
  92. return;
  93. }
  94. if( !isset( $_POST['dw_guten_update_post_nonce_desc']) || !wp_verify_nonce( $_POST['dw_guten_update_post_nonce_desc'], 'dw_guten_update_post_metabox_desc' )) {
  95. return;
  96. }
  97. if(array_key_exists('dw_guten_desc_metafield', $_POST)) {
  98. update_post_meta(
  99. $post_id,
  100. 'meta_desc',
  101. sanitize_text_field($_POST['dw_guten_desc_metafield'])
  102. );
  103. }
  104. }
  105. add_action( 'save_post', 'dw_guten_save_post_metabox_desc', 10, 2 );