maintenance-mode.php 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. class VamtamMaintenanceMode {
  3. /**
  4. * Actions and filters
  5. */
  6. public static function setup() {
  7. add_filter( 'template_redirect', array( __CLASS__, 'template_redirect' ) );
  8. add_filter( 'get_post_metadata', array( __CLASS__, 'get_post_metadata' ), 10, 4 );
  9. }
  10. /**
  11. * Redirect to selected Maintenance page if user is not logged in
  12. */
  13. public static function template_redirect() {
  14. global $wp_query;
  15. $maintenance_page = rd_vamtam_get_option( 'maintenance-page' );
  16. if ( ! empty( $maintenance_page ) && false !== get_post_status( $maintenance_page ) && ! is_user_logged_in() && ! is_page( $maintenance_page ) ) {
  17. wp_safe_redirect( get_permalink( $maintenance_page ) );
  18. exit;
  19. }
  20. }
  21. /**
  22. * The Maintenance page always uses a blank template
  23. *
  24. * @param mixed $value
  25. * @param int $object_id
  26. * @param string $meta_key
  27. * @param bool $single
  28. * @return mixed
  29. */
  30. public static function get_post_metadata( $value, $object_id, $meta_key, $single ) {
  31. if (
  32. isset( $GLOBALS['vamtam_theme']['maintenance-page'] ) &&
  33. (int) $object_id === (int) $GLOBALS['vamtam_theme']['maintenance-page'] &&
  34. '_wp_page_template' === $meta_key
  35. ) {
  36. return 'page-blank.php';
  37. }
  38. return $value;
  39. }
  40. }