class-post-status.php 2.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. <?php
  2. class Booked_WC_Post_Status {
  3. private function __construct() {
  4. $this->register_status();
  5. add_action('admin_footer', array($this, 'append_post_status_list'));
  6. add_filter('display_post_states', array($this, 'display_post_states'));
  7. }
  8. public static function setup() {
  9. return new self();
  10. }
  11. protected function register_status() {
  12. register_post_status(
  13. BOOKED_WC_PLUGIN_PREFIX . 'awaiting',
  14. array(
  15. 'label' => _x('Awaiting Payment', 'booked-woocommerce-payments'),
  16. 'public' => true,
  17. 'exclude_from_search' => false,
  18. 'show_in_admin_all_list' => true,
  19. 'show_in_admin_status_list' => true,
  20. 'label_count' => _n_noop('Awaiting Payment <span class="count">(%s)</span>', 'Awaiting Payment <span class="count">(%s)</span>'),
  21. )
  22. );
  23. return $this;
  24. }
  25. public function append_post_status_list() {
  26. global $post;
  27. if( $post && $post->post_type===BOOKED_WC_POST_TYPE ) {
  28. $post_status = BOOKED_WC_PLUGIN_PREFIX . 'awaiting';
  29. $complete = '';
  30. $label = '';
  31. if( $post->post_status===$post_status ) {
  32. $complete = ' selected=\"selected\"';
  33. $label = '<span id=\"post-status-display\"> ' . __('Awaiting Payment', 'booked-woocommerce-payments') . '</span>';
  34. }
  35. echo '
  36. <script type="text/javascript">
  37. jQuery(document).ready(function($){
  38. $("select#post_status").append("<option value=\"' . $post_status . '\" ' . $complete . '>' . __('Awaiting Payment', 'booked-woocommerce-payments') . '</option>");
  39. $(".misc-pub-section label").append("' . $label . '");
  40. });
  41. </script>
  42. ';
  43. }
  44. }
  45. public function display_post_states( $states ) {
  46. global $post;
  47. $arg = get_query_var( 'post_status' );
  48. $post_status = BOOKED_WC_PLUGIN_PREFIX . 'awaiting';
  49. if($arg!==$post_status && $post->post_status===$post_status) {
  50. return array(__('Awaiting Payment', 'booked-woocommerce-payments'));
  51. }
  52. return $states;
  53. }
  54. }