Bez popisu

template.php 2.2KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. <?php
  2. /*******************************************************************************
  3. * Copyright (c) 2019, Code Atlantic LLC
  4. ******************************************************************************/
  5. if ( ! defined( 'ABSPATH' ) ) {
  6. exit; // Exit if accessed directly
  7. }
  8. /**
  9. * @param $theme_id
  10. *
  11. * @return string
  12. */
  13. function pum_get_rendered_theme_styles( $theme_id ) {
  14. $styles = '';
  15. $theme = pum_get_theme( $theme_id );
  16. if ( ! pum_is_theme( $theme ) ) {
  17. return '';
  18. }
  19. $slug = $theme->post_name;
  20. $theme_styles = $theme->get_generated_styles();
  21. if ( empty( $theme_styles ) ) {
  22. return $styles;
  23. }
  24. foreach ( $theme_styles as $element => $element_rules ) {
  25. switch ( $element ) {
  26. case 'overlay':
  27. $css_selector = ".pum-theme-{$theme_id}";
  28. if ( $slug ) {
  29. $css_selector .= ", .pum-theme-{$slug}";
  30. }
  31. break;
  32. case 'container':
  33. $css_selector = ".pum-theme-{$theme_id} .pum-container";
  34. if ( $slug ) {
  35. $css_selector .= ", .pum-theme-{$slug} .pum-container";
  36. }
  37. break;
  38. case 'close':
  39. $css_selector = ".pum-theme-{$theme_id} .pum-content + .pum-close";
  40. $admin_bar_selector = "body.admin-bar .pum-theme-{$theme_id} .pum-content + .pum-close";
  41. if ( $slug ) {
  42. $css_selector .= ", .pum-theme-{$slug} .pum-content + .pum-close";
  43. $admin_bar_selector .= ", body.admin-bar .pum-theme-{$slug} .pum-content + .pum-close";
  44. }
  45. break;
  46. default:
  47. $css_selector = ".pum-theme-{$theme_id} .pum-{$element}";
  48. if ( $slug ) {
  49. $css_selector .= ", .pum-theme-{$slug} .pum-{$element}";
  50. }
  51. break;
  52. }
  53. $rule_set = $sep = '';
  54. foreach ( $element_rules as $property => $value ) {
  55. if ( ! empty( $value ) ) {
  56. $rule_set .= $sep . $property . ': ' . $value;
  57. $sep = '; ';
  58. }
  59. }
  60. $styles .= "$css_selector { $rule_set } \r\n";
  61. if ( $element === 'close' && ! empty( $admin_bar_selector ) && $theme->get_setting( 'close_position_outside' ) && strpos( $theme->get_setting( 'close_location' ), 'top' ) !== false ) {
  62. $top = ! empty( $element_rules['top'] ) ? (int) str_replace( 'px', '', $element_rules['top'] ) : 0;
  63. // Move it down to compensate for admin bar height.
  64. $top += 32;
  65. $styles .= "$admin_bar_selector { top: {$top}px }";
  66. }
  67. }
  68. return $styles;
  69. }