metabox.php 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180
  1. <?php
  2. /////////////// Media URL (Custom Field - media) /////////////////
  3. function dw_guten_register_media_meta() {
  4. register_meta('post', 'media', array(
  5. 'show_in_rest' => true,
  6. 'type' => 'string',
  7. 'single' => true,
  8. 'sanitize_callback' => 'sanitize_text_field',
  9. 'auth_callback' => function() {
  10. return current_user_can('edit_posts');
  11. }
  12. ));
  13. }
  14. add_action('init', 'dw_guten_register_media_meta');
  15. function dw_guten_add_media_meta_box() {
  16. add_meta_box(
  17. 'dw_guten_post_options_metabox',
  18. 'Post Options',
  19. 'dw_guten_post_options_metabox_html',
  20. 'post',
  21. 'normal',
  22. 'default',
  23. array('__back_compat_meta_box' => true)
  24. );
  25. }
  26. add_action( 'add_meta_boxes', 'dw_guten_add_media_meta_box' );
  27. function dw_guten_post_options_metabox_html($post) {
  28. $field_value = get_post_meta($post->ID, 'media', true);
  29. wp_nonce_field( 'dw_guten_update_post_metabox', 'dw_guten_update_post_nonce' );
  30. ?>
  31. <p>
  32. <label for="dw_guten_media_metafield"><?php esc_html_e( 'Media URL', 'textdomain' ); ?></label>
  33. <br />
  34. <input class="widefat" type="text" name="dw_guten_media_metafield" id="dw_guten_media_metafield" value="<?php echo esc_attr( $field_value ); ?>" />
  35. </p>
  36. <?php
  37. }
  38. function dw_guten_save_post_metabox($post_id, $post) {
  39. $edit_cap = get_post_type_object( $post->post_type )->cap->edit_post;
  40. if( !current_user_can( $edit_cap, $post_id )) {
  41. return;
  42. }
  43. if( !isset( $_POST['dw_guten_update_post_nonce']) || !wp_verify_nonce( $_POST['dw_guten_update_post_nonce'], 'dw_guten_update_post_metabox' )) {
  44. return;
  45. }
  46. if(array_key_exists('dw_guten_media_metafield', $_POST)) {
  47. update_post_meta(
  48. $post_id,
  49. 'media',
  50. sanitize_text_field($_POST['dw_guten_media_metafield'])
  51. );
  52. }
  53. }
  54. add_action( 'save_post', 'dw_guten_save_post_metabox', 10, 2 );
  55. ///////// Feature Img URL (Custom Field - featured_image_url) ////////////
  56. function dw_guten_register_featured_image_url_meta() {
  57. register_meta('post', 'featured_image_url', array(
  58. 'show_in_rest' => true,
  59. 'type' => 'string',
  60. 'single' => true,
  61. 'sanitize_callback' => 'sanitize_text_field',
  62. 'auth_callback' => function() {
  63. return current_user_can('edit_posts');
  64. }
  65. ));
  66. }
  67. add_action('init', 'dw_guten_register_featured_image_url_meta');
  68. function dw_guten_add_featured_image_url_meta_box() {
  69. add_meta_box(
  70. 'dw_guten_post_options_metabox',
  71. 'Post Options',
  72. 'dw_guten_post_options_metabox_featured_image_url',
  73. 'post',
  74. 'normal',
  75. 'default',
  76. array('__back_compat_meta_box' => true)
  77. );
  78. }
  79. add_action( 'add_meta_boxes', 'dw_guten_add_featured_image_url_meta_box' );
  80. function dw_guten_post_options_metabox_featured_image_url($post) {
  81. $field_value = get_post_meta($post->ID, 'featured_image_url', true);
  82. wp_nonce_field( 'dw_guten_update_post_metabox_featured_image_url', 'dw_guten_update_post_nonce' );
  83. ?>
  84. <p>
  85. <label for="dw_guten_featured_image_url_metafield"><?php esc_html_e( 'Featured Image URL', 'textdomain' ); ?></label>
  86. <br />
  87. <input class="widefat" type="text" name="dw_guten_featured_image_url_metafield" id="dw_guten_featured_image_url_metafield" value="<?php echo esc_attr( $field_value ); ?>" />
  88. </p>
  89. <?php
  90. }
  91. function dw_guten_save_post_metabox_featured_image_url($post_id, $post) {
  92. $edit_cap = get_post_type_object( $post->post_type )->cap->edit_post;
  93. if( !current_user_can( $edit_cap, $post_id )) {
  94. return;
  95. }
  96. if( !isset( $_POST['dw_guten_update_post_nonce_featured_image_url']) || !wp_verify_nonce( $_POST['dw_guten_update_post_nonce_featured_image_url'], 'dw_guten_update_post_metabox_featured_image_url' )) {
  97. return;
  98. }
  99. if(array_key_exists('dw_guten_media_metafield', $_POST)) {
  100. update_post_meta(
  101. $post_id,
  102. 'featured_image_url',
  103. sanitize_text_field($_POST['dw_guten_featured_image_url_metafield'])
  104. );
  105. }
  106. }
  107. add_action( 'save_post', 'dw_guten_save_post_metabox_featured_image_url', 10, 2 );
  108. /////////////// Meta Description (Custom Field - meta_desc) /////////////////
  109. function dw_guten_register_desc_meta() {
  110. register_meta('post', 'meta_desc', array(
  111. 'show_in_rest' => true,
  112. 'type' => 'string',
  113. 'single' => true,
  114. 'sanitize_callback' => 'sanitize_text_field',
  115. 'auth_callback' => function() {
  116. return current_user_can('edit_posts');
  117. }
  118. ));
  119. }
  120. add_action('init', 'dw_guten_register_desc_meta');
  121. function dw_guten_add_desc_meta_box() {
  122. add_meta_box(
  123. 'dw_guten_post_options_metabox',
  124. 'Post Options',
  125. 'dw_guten_post_options_metabox_desc',
  126. 'post',
  127. 'normal',
  128. 'default',
  129. array('__back_compat_meta_box' => true)
  130. );
  131. }
  132. add_action( 'add_meta_boxes', 'dw_guten_add_desc_meta_box' );
  133. function dw_guten_post_options_metabox_desc($post) {
  134. $field_value = get_post_meta($post->ID, 'media', true);
  135. wp_nonce_field( 'dw_guten_update_post_metabox_desc', 'dw_guten_update_post_nonce' );
  136. ?>
  137. <p>
  138. <label for="dw_guten_desc_metafield"><?php esc_html_e( 'Meta Excerpt', 'textdomain' ); ?></label>
  139. <br />
  140. <input class="widefat" type="text" name="dw_guten_desc_metafield" id="dw_guten_desc_metafield" value="<?php echo esc_attr( $field_value ); ?>" />
  141. </p>
  142. <?php
  143. }
  144. function dw_guten_save_post_metabox_desc($post_id, $post) {
  145. $edit_cap = get_post_type_object( $post->post_type )->cap->edit_post;
  146. if( !current_user_can( $edit_cap, $post_id )) {
  147. return;
  148. }
  149. 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' )) {
  150. return;
  151. }
  152. if(array_key_exists('dw_guten_desc_metafield', $_POST)) {
  153. update_post_meta(
  154. $post_id,
  155. 'meta_desc',
  156. sanitize_text_field($_POST['dw_guten_desc_metafield'])
  157. );
  158. }
  159. }
  160. add_action( 'save_post', 'dw_guten_save_post_metabox_desc', 10, 2 );