@@ -7,61 +7,61 @@ |
||
| 7 | 7 | */ |
| 8 | 8 | |
| 9 | 9 | if ( ! defined( 'ABSPATH' ) ) { |
| 10 | - exit; |
|
| 10 | + exit; |
|
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | if ( ! class_exists( 'Walker_Comment' ) ) { |
| 14 | - return; |
|
| 14 | + return; |
|
| 15 | 15 | } |
| 16 | 16 | |
| 17 | 17 | if ( ! class_exists( 'LSX_Walker_Comment' ) ) : |
| 18 | 18 | |
| 19 | - /** |
|
| 20 | - * Use Bootstrap's media object for listing comments. |
|
| 21 | - * |
|
| 22 | - * @link http://getbootstrap.com/components/#media |
|
| 23 | - * |
|
| 24 | - * @package lsx |
|
| 25 | - * @subpackage comment |
|
| 26 | - */ |
|
| 27 | - class LSX_Walker_Comment extends Walker_Comment { |
|
| 19 | + /** |
|
| 20 | + * Use Bootstrap's media object for listing comments. |
|
| 21 | + * |
|
| 22 | + * @link http://getbootstrap.com/components/#media |
|
| 23 | + * |
|
| 24 | + * @package lsx |
|
| 25 | + * @subpackage comment |
|
| 26 | + */ |
|
| 27 | + class LSX_Walker_Comment extends Walker_Comment { |
|
| 28 | 28 | |
| 29 | - function start_lvl( &$output, $depth = 0, $args = array() ) { |
|
| 30 | - $GLOBALS['comment_depth'] = $depth + 1; ?> |
|
| 29 | + function start_lvl( &$output, $depth = 0, $args = array() ) { |
|
| 30 | + $GLOBALS['comment_depth'] = $depth + 1; ?> |
|
| 31 | 31 | <ul <?php comment_class( 'media media-reply unstyled list-unstyled comment-' . get_comment_ID() ); ?>> |
| 32 | 32 | <?php |
| 33 | - } |
|
| 33 | + } |
|
| 34 | 34 | |
| 35 | - function end_lvl( &$output, $depth = 0, $args = array() ) { |
|
| 36 | - $GLOBALS['comment_depth'] = $depth + 1; |
|
| 37 | - echo '</ul>'; |
|
| 38 | - } |
|
| 35 | + function end_lvl( &$output, $depth = 0, $args = array() ) { |
|
| 36 | + $GLOBALS['comment_depth'] = $depth + 1; |
|
| 37 | + echo '</ul>'; |
|
| 38 | + } |
|
| 39 | 39 | |
| 40 | - function start_el( &$output, $comment, $depth = 0, $args = array(), $id = 0 ) { |
|
| 41 | - ++$depth; |
|
| 42 | - $GLOBALS['comment_depth'] = $depth; |
|
| 43 | - $GLOBALS['comment'] = $comment; |
|
| 40 | + function start_el( &$output, $comment, $depth = 0, $args = array(), $id = 0 ) { |
|
| 41 | + ++$depth; |
|
| 42 | + $GLOBALS['comment_depth'] = $depth; |
|
| 43 | + $GLOBALS['comment'] = $comment; |
|
| 44 | 44 | |
| 45 | - if ( ! empty( $args['callback'] ) ) { |
|
| 46 | - call_user_func( $args['callback'], $comment, $args, $depth ); |
|
| 47 | - return; |
|
| 48 | - } |
|
| 49 | - ?> |
|
| 45 | + if ( ! empty( $args['callback'] ) ) { |
|
| 46 | + call_user_func( $args['callback'], $comment, $args, $depth ); |
|
| 47 | + return; |
|
| 48 | + } |
|
| 49 | + ?> |
|
| 50 | 50 | |
| 51 | 51 | <li id="comment-<?php comment_ID(); ?>" <?php comment_class( 'media comment-' . get_comment_ID() ); ?>> |
| 52 | 52 | <?php get_template_part( 'comment' ); ?> |
| 53 | 53 | <?php |
| 54 | - } |
|
| 54 | + } |
|
| 55 | 55 | |
| 56 | - function end_el( &$output, $comment, $depth = 0, $args = array() ) { |
|
| 57 | - if ( ! empty( $args['end-callback'] ) ) { |
|
| 58 | - call_user_func( $args['end-callback'], $comment, $args, $depth ); |
|
| 59 | - return; |
|
| 60 | - } |
|
| 56 | + function end_el( &$output, $comment, $depth = 0, $args = array() ) { |
|
| 57 | + if ( ! empty( $args['end-callback'] ) ) { |
|
| 58 | + call_user_func( $args['end-callback'], $comment, $args, $depth ); |
|
| 59 | + return; |
|
| 60 | + } |
|
| 61 | 61 | |
| 62 | - echo "</div></li>\n"; |
|
| 63 | - } |
|
| 62 | + echo "</div></li>\n"; |
|
| 63 | + } |
|
| 64 | 64 | |
| 65 | - } |
|
| 65 | + } |
|
| 66 | 66 | |
| 67 | 67 | endif; |
@@ -1,7 +1,7 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | if ( ! defined( 'ABSPATH' ) ) { |
| 4 | - exit; |
|
| 4 | + exit; |
|
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | /** |
@@ -14,67 +14,67 @@ discard block |
||
| 14 | 14 | */ |
| 15 | 15 | class LSX_Optimisation { |
| 16 | 16 | |
| 17 | - /** |
|
| 18 | - * Holds class instance |
|
| 19 | - * |
|
| 20 | - * @since 1.0.0 |
|
| 21 | - * @var object |
|
| 22 | - */ |
|
| 23 | - protected static $instance = null; |
|
| 17 | + /** |
|
| 18 | + * Holds class instance |
|
| 19 | + * |
|
| 20 | + * @since 1.0.0 |
|
| 21 | + * @var object |
|
| 22 | + */ |
|
| 23 | + protected static $instance = null; |
|
| 24 | 24 | |
| 25 | - /** |
|
| 26 | - * Constructor. |
|
| 27 | - */ |
|
| 28 | - public function __construct() { |
|
| 29 | - //add_filter( 'style_loader_tag', array( $this, 'preload_css' ), 100, 4 ); |
|
| 30 | - //add_filter( 'script_loader_tag', array( $this, 'defer_parsing_of_js' ), 100, 3 ); |
|
| 31 | - add_action( 'init', array( $this, 'pum_remove_admin_bar_tools' ), 100 ); |
|
| 32 | - } |
|
| 33 | - /** |
|
| 34 | - * Return an instance of this class. |
|
| 35 | - * |
|
| 36 | - * @since 1.0.0 |
|
| 37 | - * @return object A single instance of this class. |
|
| 38 | - */ |
|
| 39 | - public static function get_instance() { |
|
| 40 | - // If the single instance hasn't been set, set it now. |
|
| 41 | - if ( null === self::$instance ) { |
|
| 42 | - self::$instance = new self; |
|
| 43 | - } |
|
| 44 | - return self::$instance; |
|
| 45 | - } |
|
| 25 | + /** |
|
| 26 | + * Constructor. |
|
| 27 | + */ |
|
| 28 | + public function __construct() { |
|
| 29 | + //add_filter( 'style_loader_tag', array( $this, 'preload_css' ), 100, 4 ); |
|
| 30 | + //add_filter( 'script_loader_tag', array( $this, 'defer_parsing_of_js' ), 100, 3 ); |
|
| 31 | + add_action( 'init', array( $this, 'pum_remove_admin_bar_tools' ), 100 ); |
|
| 32 | + } |
|
| 33 | + /** |
|
| 34 | + * Return an instance of this class. |
|
| 35 | + * |
|
| 36 | + * @since 1.0.0 |
|
| 37 | + * @return object A single instance of this class. |
|
| 38 | + */ |
|
| 39 | + public static function get_instance() { |
|
| 40 | + // If the single instance hasn't been set, set it now. |
|
| 41 | + if ( null === self::$instance ) { |
|
| 42 | + self::$instance = new self; |
|
| 43 | + } |
|
| 44 | + return self::$instance; |
|
| 45 | + } |
|
| 46 | 46 | |
| 47 | - /** |
|
| 48 | - * Defers the JS loading till Last |
|
| 49 | - * |
|
| 50 | - * @param string $url The url to check and defer. |
|
| 51 | - * @return string |
|
| 52 | - */ |
|
| 53 | - public function preload_css( $tag, $handle, $href, $media ) { |
|
| 54 | - if ( 'lsx_fonts' === $handle || 'fontawesome' === $handle ) { |
|
| 55 | - $tag = str_replace( 'href', ' preload href', $tag ); |
|
| 56 | - } |
|
| 57 | - return $tag; |
|
| 58 | - } |
|
| 47 | + /** |
|
| 48 | + * Defers the JS loading till Last |
|
| 49 | + * |
|
| 50 | + * @param string $url The url to check and defer. |
|
| 51 | + * @return string |
|
| 52 | + */ |
|
| 53 | + public function preload_css( $tag, $handle, $href, $media ) { |
|
| 54 | + if ( 'lsx_fonts' === $handle || 'fontawesome' === $handle ) { |
|
| 55 | + $tag = str_replace( 'href', ' preload href', $tag ); |
|
| 56 | + } |
|
| 57 | + return $tag; |
|
| 58 | + } |
|
| 59 | 59 | |
| 60 | - /** |
|
| 61 | - * Defers the JS loading till Last |
|
| 62 | - * |
|
| 63 | - * @param string $url The url to check and defer. |
|
| 64 | - * @return string |
|
| 65 | - */ |
|
| 66 | - public function defer_parsing_of_js( $tag, $handle, $href ) { |
|
| 67 | - $skip_defer = apply_filters( 'lsx_defer_parsing_of_js', false, $tag, $handle, $href ); |
|
| 68 | - if ( ! is_admin() && false !== stripos( $href, '.js' ) && false === stripos( $href, 'jquery.js' ) && false === $skip_defer ) { |
|
| 69 | - $tag = str_replace( 'src=', ' defer src=', $tag ); |
|
| 70 | - } |
|
| 71 | - return $tag; |
|
| 72 | - } |
|
| 60 | + /** |
|
| 61 | + * Defers the JS loading till Last |
|
| 62 | + * |
|
| 63 | + * @param string $url The url to check and defer. |
|
| 64 | + * @return string |
|
| 65 | + */ |
|
| 66 | + public function defer_parsing_of_js( $tag, $handle, $href ) { |
|
| 67 | + $skip_defer = apply_filters( 'lsx_defer_parsing_of_js', false, $tag, $handle, $href ); |
|
| 68 | + if ( ! is_admin() && false !== stripos( $href, '.js' ) && false === stripos( $href, 'jquery.js' ) && false === $skip_defer ) { |
|
| 69 | + $tag = str_replace( 'src=', ' defer src=', $tag ); |
|
| 70 | + } |
|
| 71 | + return $tag; |
|
| 72 | + } |
|
| 73 | 73 | |
| 74 | - public function pum_remove_admin_bar_tools() { |
|
| 75 | - remove_action( 'admin_bar_menu', array( 'PUM_Modules_Admin_Bar', 'toolbar_links' ), 999 ); |
|
| 76 | - remove_action( 'wp_footer', array( 'PUM_Modules_Admin_Bar', 'admin_bar_styles' ), 999 ); |
|
| 77 | - remove_action( 'init', array( 'PUM_Modules_Admin_Bar', 'show_debug_bar' ) ); |
|
| 78 | - } |
|
| 74 | + public function pum_remove_admin_bar_tools() { |
|
| 75 | + remove_action( 'admin_bar_menu', array( 'PUM_Modules_Admin_Bar', 'toolbar_links' ), 999 ); |
|
| 76 | + remove_action( 'wp_footer', array( 'PUM_Modules_Admin_Bar', 'admin_bar_styles' ), 999 ); |
|
| 77 | + remove_action( 'init', array( 'PUM_Modules_Admin_Bar', 'show_debug_bar' ) ); |
|
| 78 | + } |
|
| 79 | 79 | } |
| 80 | 80 | LSX_Optimisation::get_instance(); |
@@ -8,47 +8,47 @@ |
||
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | 10 | if ( ! defined( 'ABSPATH' ) ) { |
| 11 | - exit; |
|
| 11 | + exit; |
|
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | if ( ! class_exists( 'WP_Customize_Control' ) ) { |
| 15 | - return; |
|
| 15 | + return; |
|
| 16 | 16 | } |
| 17 | 17 | |
| 18 | 18 | if ( ! class_exists( 'LSX_Customize_Core_Control' ) ) : |
| 19 | 19 | |
| 20 | - /** |
|
| 21 | - * LSX_Customize_Core_Control Class |
|
| 22 | - * |
|
| 23 | - * @package lsx |
|
| 24 | - * @subpackage customizer |
|
| 25 | - * @category core |
|
| 26 | - */ |
|
| 27 | - class LSX_Customize_Core_Control extends WP_Customize_Control { |
|
| 28 | - |
|
| 29 | - public $type = 'core'; |
|
| 30 | - |
|
| 31 | - /** |
|
| 32 | - * Render output. |
|
| 33 | - */ |
|
| 34 | - public function render_content() { |
|
| 35 | - ?> |
|
| 20 | + /** |
|
| 21 | + * LSX_Customize_Core_Control Class |
|
| 22 | + * |
|
| 23 | + * @package lsx |
|
| 24 | + * @subpackage customizer |
|
| 25 | + * @category core |
|
| 26 | + */ |
|
| 27 | + class LSX_Customize_Core_Control extends WP_Customize_Control { |
|
| 28 | + |
|
| 29 | + public $type = 'core'; |
|
| 30 | + |
|
| 31 | + /** |
|
| 32 | + * Render output. |
|
| 33 | + */ |
|
| 34 | + public function render_content() { |
|
| 35 | + ?> |
|
| 36 | 36 | <label> |
| 37 | 37 | <?php |
| 38 | - if ( ! empty( $this->label ) ) { |
|
| 39 | - ?> |
|
| 38 | + if ( ! empty( $this->label ) ) { |
|
| 39 | + ?> |
|
| 40 | 40 | <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span> |
| 41 | 41 | <?php |
| 42 | - } |
|
| 43 | - if ( ! empty( $this->description ) ) { |
|
| 44 | - ?> |
|
| 42 | + } |
|
| 43 | + if ( ! empty( $this->description ) ) { |
|
| 44 | + ?> |
|
| 45 | 45 | <span class="description customize-control-description"><?php echo esc_html( $this->description ); ?></span> |
| 46 | 46 | <?php } ?> |
| 47 | 47 | <input <?php $this->link(); ?> type="checkbox" value="<?php echo esc_attr( $this->value() ); ?>" <?php $this->input_attrs(); ?>> |
| 48 | 48 | </label> |
| 49 | 49 | <?php |
| 50 | - } |
|
| 50 | + } |
|
| 51 | 51 | |
| 52 | - } |
|
| 52 | + } |
|
| 53 | 53 | |
| 54 | 54 | endif; |
@@ -1,7 +1,7 @@ discard block |
||
| 1 | 1 | <?php |
| 2 | 2 | |
| 3 | 3 | if ( ! defined( 'ABSPATH' ) ) { |
| 4 | - exit; |
|
| 4 | + exit; |
|
| 5 | 5 | } |
| 6 | 6 | |
| 7 | 7 | /** |
@@ -14,69 +14,69 @@ discard block |
||
| 14 | 14 | */ |
| 15 | 15 | class LSX_Rest_Helper { |
| 16 | 16 | |
| 17 | - /** |
|
| 18 | - * Holds class instance |
|
| 19 | - * |
|
| 20 | - * @since 1.0.0 |
|
| 21 | - * @var object |
|
| 22 | - */ |
|
| 23 | - protected static $instance = null; |
|
| 17 | + /** |
|
| 18 | + * Holds class instance |
|
| 19 | + * |
|
| 20 | + * @since 1.0.0 |
|
| 21 | + * @var object |
|
| 22 | + */ |
|
| 23 | + protected static $instance = null; |
|
| 24 | 24 | |
| 25 | - /** |
|
| 26 | - * Holds the conditional. |
|
| 27 | - * |
|
| 28 | - * @var boolean |
|
| 29 | - */ |
|
| 30 | - protected $is_rest_request = false; |
|
| 25 | + /** |
|
| 26 | + * Holds the conditional. |
|
| 27 | + * |
|
| 28 | + * @var boolean |
|
| 29 | + */ |
|
| 30 | + protected $is_rest_request = false; |
|
| 31 | 31 | |
| 32 | - /** |
|
| 33 | - * Constructor. |
|
| 34 | - */ |
|
| 35 | - public function __construct() { |
|
| 36 | - add_filter( 'tribe_events_views_v2_rest_params', array( $this, 'check_event_request' ), 10, 2 ); |
|
| 37 | - } |
|
| 38 | - /** |
|
| 39 | - * Return an instance of this class. |
|
| 40 | - * |
|
| 41 | - * @since 1.0.0 |
|
| 42 | - * @return object A single instance of this class. |
|
| 43 | - */ |
|
| 44 | - public static function get_instance() { |
|
| 45 | - // If the single instance hasn't been set, set it now. |
|
| 46 | - if ( null === self::$instance ) { |
|
| 47 | - self::$instance = new self; |
|
| 48 | - } |
|
| 49 | - return self::$instance; |
|
| 50 | - } |
|
| 32 | + /** |
|
| 33 | + * Constructor. |
|
| 34 | + */ |
|
| 35 | + public function __construct() { |
|
| 36 | + add_filter( 'tribe_events_views_v2_rest_params', array( $this, 'check_event_request' ), 10, 2 ); |
|
| 37 | + } |
|
| 38 | + /** |
|
| 39 | + * Return an instance of this class. |
|
| 40 | + * |
|
| 41 | + * @since 1.0.0 |
|
| 42 | + * @return object A single instance of this class. |
|
| 43 | + */ |
|
| 44 | + public static function get_instance() { |
|
| 45 | + // If the single instance hasn't been set, set it now. |
|
| 46 | + if ( null === self::$instance ) { |
|
| 47 | + self::$instance = new self; |
|
| 48 | + } |
|
| 49 | + return self::$instance; |
|
| 50 | + } |
|
| 51 | 51 | |
| 52 | - /** |
|
| 53 | - * This will set the 'is_rest_request' variable as true if it runs. Tribe has already done the checkes for us. |
|
| 54 | - * |
|
| 55 | - * @param array $params |
|
| 56 | - * @param array $request |
|
| 57 | - * @return void |
|
| 58 | - */ |
|
| 59 | - public function check_event_request( $params, $request ) { |
|
| 60 | - $this->is_rest_request = true; |
|
| 61 | - return $params; |
|
| 62 | - } |
|
| 52 | + /** |
|
| 53 | + * This will set the 'is_rest_request' variable as true if it runs. Tribe has already done the checkes for us. |
|
| 54 | + * |
|
| 55 | + * @param array $params |
|
| 56 | + * @param array $request |
|
| 57 | + * @return void |
|
| 58 | + */ |
|
| 59 | + public function check_event_request( $params, $request ) { |
|
| 60 | + $this->is_rest_request = true; |
|
| 61 | + return $params; |
|
| 62 | + } |
|
| 63 | 63 | |
| 64 | - /** |
|
| 65 | - * Determines if the request is an REST API request. |
|
| 66 | - * |
|
| 67 | - * @return bool True if it's a REST API request, false otherwise. |
|
| 68 | - */ |
|
| 69 | - public function is_rest_api_request() { |
|
| 70 | - if ( true === $this->is_rest_request ) { |
|
| 71 | - return $this->is_rest_request; |
|
| 72 | - } |
|
| 64 | + /** |
|
| 65 | + * Determines if the request is an REST API request. |
|
| 66 | + * |
|
| 67 | + * @return bool True if it's a REST API request, false otherwise. |
|
| 68 | + */ |
|
| 69 | + public function is_rest_api_request() { |
|
| 70 | + if ( true === $this->is_rest_request ) { |
|
| 71 | + return $this->is_rest_request; |
|
| 72 | + } |
|
| 73 | 73 | |
| 74 | - if ( empty( $_SERVER['REQUEST_URI'] ) ) { |
|
| 75 | - return false; |
|
| 76 | - } |
|
| 77 | - $rest_prefix = trailingslashit( rest_get_url_prefix() ); |
|
| 78 | - $this->is_rest_request = ( false !== strpos( $_SERVER['REQUEST_URI'], $rest_prefix ) ); |
|
| 79 | - return $this->is_rest_request; |
|
| 80 | - } |
|
| 74 | + if ( empty( $_SERVER['REQUEST_URI'] ) ) { |
|
| 75 | + return false; |
|
| 76 | + } |
|
| 77 | + $rest_prefix = trailingslashit( rest_get_url_prefix() ); |
|
| 78 | + $this->is_rest_request = ( false !== strpos( $_SERVER['REQUEST_URI'], $rest_prefix ) ); |
|
| 79 | + return $this->is_rest_request; |
|
| 80 | + } |
|
| 81 | 81 | } |
| 82 | 82 | $rest_helper = LSX_Rest_Helper::get_instance(); |
@@ -7,217 +7,217 @@ |
||
| 7 | 7 | */ |
| 8 | 8 | |
| 9 | 9 | if ( ! defined( 'ABSPATH' ) ) { |
| 10 | - exit; |
|
| 10 | + exit; |
|
| 11 | 11 | } |
| 12 | 12 | |
| 13 | 13 | if ( ! class_exists( 'LSX_Theme_Customizer' ) ) : |
| 14 | 14 | |
| 15 | - /** |
|
| 16 | - * Customizer Configuration File |
|
| 17 | - * |
|
| 18 | - * @package lsx |
|
| 19 | - * @subpackage customizer |
|
| 20 | - */ |
|
| 21 | - class LSX_Theme_Customizer { |
|
| 22 | - |
|
| 23 | - public $post_types = array(); |
|
| 24 | - private $controls = array(); |
|
| 25 | - |
|
| 26 | - /** |
|
| 27 | - * Initialize the plugin by setting localization and loading public scripts and styles. |
|
| 28 | - */ |
|
| 29 | - public function __construct( $controls ) { |
|
| 30 | - require get_template_directory() . '/includes/classes/class-lsx-customize-core-control.php'; |
|
| 31 | - require get_template_directory() . '/includes/classes/class-lsx-customize-layout-control.php'; |
|
| 32 | - require get_template_directory() . '/includes/classes/class-lsx-customize-header-layout-control.php'; |
|
| 33 | - require get_template_directory() . '/includes/classes/class-lsx-customize-mobile-header-layout-control.php'; |
|
| 34 | - |
|
| 35 | - $this->controls = $controls; |
|
| 36 | - |
|
| 37 | - add_action( 'customize_preview_init', array( $this, 'customize_preview_js' ), 20 ); |
|
| 38 | - add_action( 'customize_register', array( $this, 'customizer' ), 11 ); |
|
| 39 | - } |
|
| 40 | - |
|
| 41 | - /** |
|
| 42 | - * Binds JS handlers to make Theme Customizer preview reload changes asynchronously. |
|
| 43 | - */ |
|
| 44 | - public function customize_preview_js() { |
|
| 45 | - wp_enqueue_script( 'lsx_customizer', get_template_directory_uri() . '/assets/js/admin/customizer.js', array( 'customize-preview' ), LSX_VERSION, true ); |
|
| 46 | - |
|
| 47 | - wp_localize_script( |
|
| 48 | - 'lsx_customizer', |
|
| 49 | - 'lsx_customizer_params', |
|
| 50 | - array( |
|
| 51 | - 'template_directory' => get_template_directory_uri(), |
|
| 52 | - ) |
|
| 53 | - ); |
|
| 54 | - } |
|
| 55 | - |
|
| 56 | - /** |
|
| 57 | - * Create customiser controls. |
|
| 58 | - */ |
|
| 59 | - public function customizer( $wp_customize ) { |
|
| 60 | - // Start panels. |
|
| 61 | - if ( ! empty( $this->controls['panels'] ) ) { |
|
| 62 | - foreach ( $this->controls['panels'] as $panel_slug => $args ) { |
|
| 63 | - $this->add_panel( $panel_slug, $args, $wp_customize ); |
|
| 64 | - } |
|
| 65 | - } |
|
| 66 | - |
|
| 67 | - // Start sections. |
|
| 68 | - if ( ! empty( $this->controls['sections'] ) ) { |
|
| 69 | - foreach ( $this->controls['sections'] as $section_slug => $args ) { |
|
| 70 | - $this->add_section( $section_slug, $args, $wp_customize ); |
|
| 71 | - } |
|
| 72 | - } |
|
| 73 | - |
|
| 74 | - // Start settings. |
|
| 75 | - if ( ! empty( $this->controls['settings'] ) ) { |
|
| 76 | - foreach ( $this->controls['settings'] as $settings_slug => $args ) { |
|
| 77 | - $this->add_setting( $settings_slug, $args, $wp_customize ); |
|
| 78 | - } |
|
| 79 | - } |
|
| 80 | - |
|
| 81 | - // Start fields. |
|
| 82 | - if ( ! empty( $this->controls['fields'] ) ) { |
|
| 83 | - foreach ( $this->controls['fields'] as $field_slug => $args ) { |
|
| 84 | - $this->add_control( $field_slug, $args, $wp_customize ); |
|
| 85 | - } |
|
| 86 | - } |
|
| 87 | - |
|
| 88 | - // Start selective refresh. |
|
| 89 | - if ( ! empty( $this->controls['selective_refresh'] ) ) { |
|
| 90 | - foreach ( $this->controls['selective_refresh'] as $field_slug => $args ) { |
|
| 91 | - $this->add_selective_refresh( $field_slug, $args, $wp_customize ); |
|
| 92 | - } |
|
| 93 | - } |
|
| 94 | - |
|
| 95 | - $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; |
|
| 96 | - $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; |
|
| 97 | - $wp_customize->get_setting( 'background_color' )->transport = 'postMessage'; |
|
| 98 | - |
|
| 99 | - $wp_customize->selective_refresh->add_partial( |
|
| 100 | - 'blogname', |
|
| 101 | - array( |
|
| 102 | - 'selector' => 'h1.site-title a', |
|
| 103 | - 'render_callback' => function() { |
|
| 104 | - bloginfo( 'name' ); |
|
| 105 | - }, |
|
| 106 | - ) |
|
| 107 | - ); |
|
| 108 | - |
|
| 109 | - $wp_customize->selective_refresh->add_partial( |
|
| 110 | - 'blogdescription', |
|
| 111 | - array( |
|
| 112 | - 'selector' => '.site-description', |
|
| 113 | - 'render_callback' => function() { |
|
| 114 | - bloginfo( 'description' ); |
|
| 115 | - }, |
|
| 116 | - ) |
|
| 117 | - ); |
|
| 118 | - } |
|
| 119 | - |
|
| 120 | - /** |
|
| 121 | - * Create a panel. |
|
| 122 | - */ |
|
| 123 | - private function add_panel( $slug, $args, $wp_customize ) { |
|
| 124 | - $default_args = array( |
|
| 125 | - 'title' => null, |
|
| 126 | - 'description' => null, |
|
| 127 | - ); |
|
| 128 | - |
|
| 129 | - $wp_customize->add_panel( |
|
| 130 | - $slug, |
|
| 131 | - array_merge( $default_args, $args ) |
|
| 132 | - ); |
|
| 133 | - } |
|
| 134 | - |
|
| 135 | - /** |
|
| 136 | - * Create a section. |
|
| 137 | - */ |
|
| 138 | - private function add_section( $slug, $args, $wp_customize ) { |
|
| 139 | - $default_args = array( |
|
| 140 | - 'capability' => 'edit_theme_options', |
|
| 141 | - 'description' => null, |
|
| 142 | - ); |
|
| 143 | - |
|
| 144 | - $wp_customize->add_section( $slug, array_merge( $default_args, $args ) ); |
|
| 145 | - } |
|
| 146 | - |
|
| 147 | - /** |
|
| 148 | - * Create a setting. |
|
| 149 | - */ |
|
| 150 | - private function add_setting( $slug, $args, $wp_customize ) { |
|
| 151 | - $wp_customize->add_setting( |
|
| 152 | - $slug, |
|
| 153 | - array_merge( |
|
| 154 | - array( |
|
| 155 | - 'default' => null, |
|
| 156 | - 'type' => 'theme_mod', |
|
| 157 | - 'capability' => 'edit_theme_options', |
|
| 158 | - 'transport' => 'postMessage', |
|
| 159 | - 'sanitize_callback' => 'lsx_sanitize_choices', |
|
| 160 | - ), |
|
| 161 | - $args |
|
| 162 | - ) |
|
| 163 | - ); |
|
| 164 | - } |
|
| 165 | - |
|
| 166 | - /** |
|
| 167 | - * Create a control. |
|
| 168 | - */ |
|
| 169 | - private function add_control( $slug, $args, $wp_customize ) { |
|
| 170 | - $default_args = array(); |
|
| 171 | - |
|
| 172 | - if ( isset( $args['control'] ) && class_exists( $args['control'] ) ) { |
|
| 173 | - $control_class = $args['control']; |
|
| 174 | - unset( $args['control'] ); |
|
| 175 | - |
|
| 176 | - $control = new $control_class( $wp_customize, $slug, array_merge( $default_args, $args ) ); |
|
| 177 | - $wp_customize->add_control( $control ); |
|
| 178 | - } else { |
|
| 179 | - if ( isset( $args['control'] ) ) { |
|
| 180 | - unset( $args['control'] ); |
|
| 181 | - } |
|
| 182 | - |
|
| 183 | - $wp_customize->add_control( |
|
| 184 | - $slug, |
|
| 185 | - array_merge( $default_args, $args ) |
|
| 186 | - ); |
|
| 187 | - } |
|
| 188 | - } |
|
| 189 | - |
|
| 190 | - /** |
|
| 191 | - * Create a selective refresh. |
|
| 192 | - */ |
|
| 193 | - private function add_selective_refresh( $slug, $args, $wp_customize ) { |
|
| 194 | - $default_args = array( |
|
| 195 | - 'selector' => null, |
|
| 196 | - 'render_callback' => null, |
|
| 197 | - ); |
|
| 198 | - |
|
| 199 | - $wp_customize->selective_refresh->add_partial( |
|
| 200 | - $slug, |
|
| 201 | - array_merge( $default_args, $args ) |
|
| 202 | - ); |
|
| 203 | - } |
|
| 204 | - |
|
| 205 | - /** |
|
| 206 | - * Returns a registered field. |
|
| 207 | - */ |
|
| 208 | - public function get_control( $id ) { |
|
| 209 | - $field = $this->controls['fields'][ $id ]; |
|
| 210 | - return $field; |
|
| 211 | - } |
|
| 212 | - |
|
| 213 | - /** |
|
| 214 | - * Returns a registered setting. |
|
| 215 | - */ |
|
| 216 | - public function get_setting( $id ) { |
|
| 217 | - $setting = $this->controls['settings'][ $id ]; |
|
| 218 | - return $setting; |
|
| 219 | - } |
|
| 220 | - |
|
| 221 | - } |
|
| 15 | + /** |
|
| 16 | + * Customizer Configuration File |
|
| 17 | + * |
|
| 18 | + * @package lsx |
|
| 19 | + * @subpackage customizer |
|
| 20 | + */ |
|
| 21 | + class LSX_Theme_Customizer { |
|
| 22 | + |
|
| 23 | + public $post_types = array(); |
|
| 24 | + private $controls = array(); |
|
| 25 | + |
|
| 26 | + /** |
|
| 27 | + * Initialize the plugin by setting localization and loading public scripts and styles. |
|
| 28 | + */ |
|
| 29 | + public function __construct( $controls ) { |
|
| 30 | + require get_template_directory() . '/includes/classes/class-lsx-customize-core-control.php'; |
|
| 31 | + require get_template_directory() . '/includes/classes/class-lsx-customize-layout-control.php'; |
|
| 32 | + require get_template_directory() . '/includes/classes/class-lsx-customize-header-layout-control.php'; |
|
| 33 | + require get_template_directory() . '/includes/classes/class-lsx-customize-mobile-header-layout-control.php'; |
|
| 34 | + |
|
| 35 | + $this->controls = $controls; |
|
| 36 | + |
|
| 37 | + add_action( 'customize_preview_init', array( $this, 'customize_preview_js' ), 20 ); |
|
| 38 | + add_action( 'customize_register', array( $this, 'customizer' ), 11 ); |
|
| 39 | + } |
|
| 40 | + |
|
| 41 | + /** |
|
| 42 | + * Binds JS handlers to make Theme Customizer preview reload changes asynchronously. |
|
| 43 | + */ |
|
| 44 | + public function customize_preview_js() { |
|
| 45 | + wp_enqueue_script( 'lsx_customizer', get_template_directory_uri() . '/assets/js/admin/customizer.js', array( 'customize-preview' ), LSX_VERSION, true ); |
|
| 46 | + |
|
| 47 | + wp_localize_script( |
|
| 48 | + 'lsx_customizer', |
|
| 49 | + 'lsx_customizer_params', |
|
| 50 | + array( |
|
| 51 | + 'template_directory' => get_template_directory_uri(), |
|
| 52 | + ) |
|
| 53 | + ); |
|
| 54 | + } |
|
| 55 | + |
|
| 56 | + /** |
|
| 57 | + * Create customiser controls. |
|
| 58 | + */ |
|
| 59 | + public function customizer( $wp_customize ) { |
|
| 60 | + // Start panels. |
|
| 61 | + if ( ! empty( $this->controls['panels'] ) ) { |
|
| 62 | + foreach ( $this->controls['panels'] as $panel_slug => $args ) { |
|
| 63 | + $this->add_panel( $panel_slug, $args, $wp_customize ); |
|
| 64 | + } |
|
| 65 | + } |
|
| 66 | + |
|
| 67 | + // Start sections. |
|
| 68 | + if ( ! empty( $this->controls['sections'] ) ) { |
|
| 69 | + foreach ( $this->controls['sections'] as $section_slug => $args ) { |
|
| 70 | + $this->add_section( $section_slug, $args, $wp_customize ); |
|
| 71 | + } |
|
| 72 | + } |
|
| 73 | + |
|
| 74 | + // Start settings. |
|
| 75 | + if ( ! empty( $this->controls['settings'] ) ) { |
|
| 76 | + foreach ( $this->controls['settings'] as $settings_slug => $args ) { |
|
| 77 | + $this->add_setting( $settings_slug, $args, $wp_customize ); |
|
| 78 | + } |
|
| 79 | + } |
|
| 80 | + |
|
| 81 | + // Start fields. |
|
| 82 | + if ( ! empty( $this->controls['fields'] ) ) { |
|
| 83 | + foreach ( $this->controls['fields'] as $field_slug => $args ) { |
|
| 84 | + $this->add_control( $field_slug, $args, $wp_customize ); |
|
| 85 | + } |
|
| 86 | + } |
|
| 87 | + |
|
| 88 | + // Start selective refresh. |
|
| 89 | + if ( ! empty( $this->controls['selective_refresh'] ) ) { |
|
| 90 | + foreach ( $this->controls['selective_refresh'] as $field_slug => $args ) { |
|
| 91 | + $this->add_selective_refresh( $field_slug, $args, $wp_customize ); |
|
| 92 | + } |
|
| 93 | + } |
|
| 94 | + |
|
| 95 | + $wp_customize->get_setting( 'blogname' )->transport = 'postMessage'; |
|
| 96 | + $wp_customize->get_setting( 'blogdescription' )->transport = 'postMessage'; |
|
| 97 | + $wp_customize->get_setting( 'background_color' )->transport = 'postMessage'; |
|
| 98 | + |
|
| 99 | + $wp_customize->selective_refresh->add_partial( |
|
| 100 | + 'blogname', |
|
| 101 | + array( |
|
| 102 | + 'selector' => 'h1.site-title a', |
|
| 103 | + 'render_callback' => function() { |
|
| 104 | + bloginfo( 'name' ); |
|
| 105 | + }, |
|
| 106 | + ) |
|
| 107 | + ); |
|
| 108 | + |
|
| 109 | + $wp_customize->selective_refresh->add_partial( |
|
| 110 | + 'blogdescription', |
|
| 111 | + array( |
|
| 112 | + 'selector' => '.site-description', |
|
| 113 | + 'render_callback' => function() { |
|
| 114 | + bloginfo( 'description' ); |
|
| 115 | + }, |
|
| 116 | + ) |
|
| 117 | + ); |
|
| 118 | + } |
|
| 119 | + |
|
| 120 | + /** |
|
| 121 | + * Create a panel. |
|
| 122 | + */ |
|
| 123 | + private function add_panel( $slug, $args, $wp_customize ) { |
|
| 124 | + $default_args = array( |
|
| 125 | + 'title' => null, |
|
| 126 | + 'description' => null, |
|
| 127 | + ); |
|
| 128 | + |
|
| 129 | + $wp_customize->add_panel( |
|
| 130 | + $slug, |
|
| 131 | + array_merge( $default_args, $args ) |
|
| 132 | + ); |
|
| 133 | + } |
|
| 134 | + |
|
| 135 | + /** |
|
| 136 | + * Create a section. |
|
| 137 | + */ |
|
| 138 | + private function add_section( $slug, $args, $wp_customize ) { |
|
| 139 | + $default_args = array( |
|
| 140 | + 'capability' => 'edit_theme_options', |
|
| 141 | + 'description' => null, |
|
| 142 | + ); |
|
| 143 | + |
|
| 144 | + $wp_customize->add_section( $slug, array_merge( $default_args, $args ) ); |
|
| 145 | + } |
|
| 146 | + |
|
| 147 | + /** |
|
| 148 | + * Create a setting. |
|
| 149 | + */ |
|
| 150 | + private function add_setting( $slug, $args, $wp_customize ) { |
|
| 151 | + $wp_customize->add_setting( |
|
| 152 | + $slug, |
|
| 153 | + array_merge( |
|
| 154 | + array( |
|
| 155 | + 'default' => null, |
|
| 156 | + 'type' => 'theme_mod', |
|
| 157 | + 'capability' => 'edit_theme_options', |
|
| 158 | + 'transport' => 'postMessage', |
|
| 159 | + 'sanitize_callback' => 'lsx_sanitize_choices', |
|
| 160 | + ), |
|
| 161 | + $args |
|
| 162 | + ) |
|
| 163 | + ); |
|
| 164 | + } |
|
| 165 | + |
|
| 166 | + /** |
|
| 167 | + * Create a control. |
|
| 168 | + */ |
|
| 169 | + private function add_control( $slug, $args, $wp_customize ) { |
|
| 170 | + $default_args = array(); |
|
| 171 | + |
|
| 172 | + if ( isset( $args['control'] ) && class_exists( $args['control'] ) ) { |
|
| 173 | + $control_class = $args['control']; |
|
| 174 | + unset( $args['control'] ); |
|
| 175 | + |
|
| 176 | + $control = new $control_class( $wp_customize, $slug, array_merge( $default_args, $args ) ); |
|
| 177 | + $wp_customize->add_control( $control ); |
|
| 178 | + } else { |
|
| 179 | + if ( isset( $args['control'] ) ) { |
|
| 180 | + unset( $args['control'] ); |
|
| 181 | + } |
|
| 182 | + |
|
| 183 | + $wp_customize->add_control( |
|
| 184 | + $slug, |
|
| 185 | + array_merge( $default_args, $args ) |
|
| 186 | + ); |
|
| 187 | + } |
|
| 188 | + } |
|
| 189 | + |
|
| 190 | + /** |
|
| 191 | + * Create a selective refresh. |
|
| 192 | + */ |
|
| 193 | + private function add_selective_refresh( $slug, $args, $wp_customize ) { |
|
| 194 | + $default_args = array( |
|
| 195 | + 'selector' => null, |
|
| 196 | + 'render_callback' => null, |
|
| 197 | + ); |
|
| 198 | + |
|
| 199 | + $wp_customize->selective_refresh->add_partial( |
|
| 200 | + $slug, |
|
| 201 | + array_merge( $default_args, $args ) |
|
| 202 | + ); |
|
| 203 | + } |
|
| 204 | + |
|
| 205 | + /** |
|
| 206 | + * Returns a registered field. |
|
| 207 | + */ |
|
| 208 | + public function get_control( $id ) { |
|
| 209 | + $field = $this->controls['fields'][ $id ]; |
|
| 210 | + return $field; |
|
| 211 | + } |
|
| 212 | + |
|
| 213 | + /** |
|
| 214 | + * Returns a registered setting. |
|
| 215 | + */ |
|
| 216 | + public function get_setting( $id ) { |
|
| 217 | + $setting = $this->controls['settings'][ $id ]; |
|
| 218 | + return $setting; |
|
| 219 | + } |
|
| 220 | + |
|
| 221 | + } |
|
| 222 | 222 | |
| 223 | 223 | endif; |
@@ -11,221 +11,221 @@ |
||
| 11 | 11 | */ |
| 12 | 12 | if ( interface_exists( 'WPSEO_Graph_Piece' ) ) { |
| 13 | 13 | |
| 14 | - class LSX_Schema_Graph_Piece implements WPSEO_Graph_Piece { |
|
| 15 | - /** |
|
| 16 | - * A value object with context variables. |
|
| 17 | - * |
|
| 18 | - * @var \WPSEO_Schema_Context |
|
| 19 | - */ |
|
| 20 | - public $context; |
|
| 21 | - /** |
|
| 22 | - * This is the post type that you want the piece to output for. |
|
| 23 | - * |
|
| 24 | - * @var string; |
|
| 25 | - */ |
|
| 26 | - public $post_type; |
|
| 27 | - /** |
|
| 28 | - * If this is a top level parent |
|
| 29 | - * |
|
| 30 | - * @var boolean |
|
| 31 | - */ |
|
| 32 | - public $is_top_level; |
|
| 33 | - /** |
|
| 34 | - * This holds the meta_key => scehma_type of the fields you want to add to your subtrip. |
|
| 35 | - * |
|
| 36 | - * @var array() |
|
| 37 | - */ |
|
| 38 | - public $place_ids; |
|
| 39 | - /** |
|
| 40 | - * This holds an object or the current trip post. |
|
| 41 | - * |
|
| 42 | - * @var WP_Post(); |
|
| 43 | - */ |
|
| 44 | - public $post; |
|
| 45 | - /** |
|
| 46 | - * This holds URL for the trip |
|
| 47 | - * |
|
| 48 | - * @var string |
|
| 49 | - */ |
|
| 50 | - public $post_url; |
|
| 51 | - /** |
|
| 52 | - * Constructor. |
|
| 53 | - * |
|
| 54 | - * @param \WPSEO_Schema_Context $context A value object with context variables. |
|
| 55 | - */ |
|
| 56 | - public function __construct( WPSEO_Schema_Context $context ) { |
|
| 57 | - $this->context = $context; |
|
| 58 | - $this->place_ids = array(); |
|
| 59 | - $this->post = get_post( $this->context->id ); |
|
| 60 | - $this->post_url = get_permalink( $this->context->id ); |
|
| 61 | - $this->is_top_level = false; |
|
| 62 | - if ( is_object( $this->post ) && isset( $this->post->post_parent ) && ( false === $this->post->post_parent || 0 === $this->post->post_parent || '' === $this->post->post_parent ) ) { |
|
| 63 | - $this->is_top_level = true; |
|
| 64 | - } |
|
| 65 | - } |
|
| 66 | - /** |
|
| 67 | - * Determines whether or not a piece should be added to the graph. |
|
| 68 | - * |
|
| 69 | - * @return bool |
|
| 70 | - */ |
|
| 71 | - public function is_needed() { |
|
| 72 | - if ( ! is_singular() ) { |
|
| 73 | - return false; |
|
| 74 | - } |
|
| 75 | - if ( false === $this->context->site_represents ) { |
|
| 76 | - return false; |
|
| 77 | - } |
|
| 78 | - return LSX_Schema_Utils::is_type( get_post_type(), $this->post_type ); |
|
| 79 | - } |
|
| 80 | - /** |
|
| 81 | - * Returns Review data. |
|
| 82 | - * |
|
| 83 | - * @return array $data Review data. |
|
| 84 | - */ |
|
| 85 | - public function generate() { |
|
| 86 | - $data = array(); |
|
| 87 | - return $data; |
|
| 88 | - } |
|
| 89 | - /** |
|
| 90 | - * Gets the connected reviews post type and set it as the "Review" schema |
|
| 91 | - * |
|
| 92 | - * @param array $data An array of offers already added. |
|
| 93 | - * @param string $data_key |
|
| 94 | - * @param boolean $include_aggregate |
|
| 95 | - * @return array $data |
|
| 96 | - */ |
|
| 97 | - public function add_reviews( $data, $data_key = 'reviews', $include_aggregate = true ) { |
|
| 98 | - $reviews = get_post_meta( $this->context->id, 'review_to_' . $this->post_type, false ); |
|
| 99 | - $reviews_array = array(); |
|
| 100 | - if ( ! empty( $reviews ) ) { |
|
| 101 | - $aggregate_value = 1; |
|
| 102 | - $review_count = 0; |
|
| 103 | - foreach ( $reviews as $review_id ) { |
|
| 104 | - $rating = get_post_meta( $review_id, 'rating', true ); |
|
| 105 | - $author = get_post_meta( $review_id, 'reviewer_name', true ); |
|
| 106 | - $description = wp_strip_all_tags( get_the_excerpt( $review_id ) ); |
|
| 107 | - $review_args = array( |
|
| 108 | - 'author' => $author, |
|
| 109 | - 'reviewBody' => $description, |
|
| 110 | - ); |
|
| 111 | - // Add in the review rating. |
|
| 112 | - if ( false !== $rating && '' !== $rating && '0' !== $rating && 0 !== $rating ) { |
|
| 113 | - $review_args['reviewRating'] = array( |
|
| 114 | - '@type' => 'Rating', |
|
| 115 | - 'ratingValue' => $rating, |
|
| 116 | - ); |
|
| 117 | - } |
|
| 118 | - $reviews_array = LSX_Schema_Utils::add_review( $reviews_array, $review_id, $this->context, $review_args ); |
|
| 119 | - $review_count++; |
|
| 120 | - } |
|
| 121 | - if ( ! empty( $reviews_array ) ) { |
|
| 122 | - if ( true === $include_aggregate ) { |
|
| 123 | - $data['aggregateRating'] = array( |
|
| 124 | - '@type' => 'AggregateRating', |
|
| 125 | - 'ratingValue' => (string) $aggregate_value, |
|
| 126 | - 'reviewCount' => (string) $review_count, |
|
| 127 | - 'bestRating' => '5', |
|
| 128 | - 'worstRating' => '1', |
|
| 129 | - ); |
|
| 130 | - } |
|
| 131 | - $data[ $data_key ] = $reviews_array; |
|
| 132 | - } |
|
| 133 | - } |
|
| 134 | - return $data; |
|
| 135 | - } |
|
| 136 | - /** |
|
| 137 | - * Gets the connected posts and set it as the "Article" schema |
|
| 138 | - * |
|
| 139 | - * @param array $data An array of offers already added. |
|
| 140 | - * @param string $data_key |
|
| 141 | - * @return array $data |
|
| 142 | - */ |
|
| 143 | - public function add_articles( $data, $data_key = 'subjectOf' ) { |
|
| 144 | - $posts = get_post_meta( $this->context->id, 'post_to_' . $this->post_type, false ); |
|
| 145 | - $posts_array = array(); |
|
| 146 | - if ( ! empty( $posts ) ) { |
|
| 147 | - foreach ( $posts as $post_id ) { |
|
| 148 | - $post_args = array( |
|
| 149 | - 'articleBody' => wp_strip_all_tags( get_the_excerpt( $post_id ) ), |
|
| 150 | - 'headline' => get_the_title( $post_id ), |
|
| 151 | - ); |
|
| 152 | - $section = get_the_term_list( $post_id, 'category' ); |
|
| 153 | - if ( ! is_wp_error( $section ) && '' !== $section && false !== $section ) { |
|
| 154 | - $post_args['articleSection'] = wp_strip_all_tags( $section ); |
|
| 155 | - } |
|
| 156 | - if ( $this->context->site_represents_reference ) { |
|
| 157 | - $post_args['publisher'] = $this->context->site_represents_reference; |
|
| 158 | - } |
|
| 159 | - $image_url = get_the_post_thumbnail_url( $post_id, 'lsx-thumbnail-wide' ); |
|
| 160 | - if ( false !== $image_url ) { |
|
| 161 | - $post_args['image'] = $image_url; |
|
| 162 | - } |
|
| 163 | - $posts_array = LSX_Schema_Utils::add_article( $posts_array, $post_id, $this->context, $post_args ); |
|
| 164 | - } |
|
| 165 | - if ( ! empty( $posts_array ) ) { |
|
| 166 | - $data[ $data_key ] = $posts_array; |
|
| 167 | - } |
|
| 168 | - } |
|
| 169 | - return $data; |
|
| 170 | - } |
|
| 171 | - /** |
|
| 172 | - * Adds the Project and Testimonials attached to the Team Member |
|
| 173 | - * |
|
| 174 | - * @param array $data |
|
| 175 | - * |
|
| 176 | - * @return array $data |
|
| 177 | - */ |
|
| 178 | - public function add_connections( $data ) { |
|
| 179 | - $connections_array = array(); |
|
| 180 | - if ( $this->is_top_level ) { |
|
| 181 | - $connections_array = $this->add_regions( $connections_array ); |
|
| 182 | - $connections_array = $this->add_accommodation( $connections_array ); |
|
| 183 | - if ( ! empty( $connections_array ) ) { |
|
| 184 | - $data['containsPlace'] = $connections_array; |
|
| 185 | - } |
|
| 186 | - } else { |
|
| 187 | - $connections_array = $this->add_countries( $connections_array ); |
|
| 188 | - $data['containedInPlace'] = $connections_array; |
|
| 189 | - $connections_array = array(); |
|
| 190 | - $connections_array = $this->add_accommodation( $connections_array ); |
|
| 191 | - $data['containsPlace'] = $connections_array; |
|
| 192 | - } |
|
| 193 | - return $data; |
|
| 194 | - } |
|
| 195 | - /** |
|
| 196 | - * Adds the terms for the taxonomy |
|
| 197 | - * |
|
| 198 | - * @param array $data Review data. |
|
| 199 | - * @param array $data_key the parameter name you wish to assign it to. |
|
| 200 | - * @param array $taxonomy the taxonomy to grab terms for. |
|
| 201 | - * |
|
| 202 | - * @return array $data Review data. |
|
| 203 | - */ |
|
| 204 | - public function add_taxonomy_terms( $data, $data_key, $taxonomy ) { |
|
| 205 | - /** |
|
| 206 | - * Filter: 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy' - Allow changing the taxonomy used to assign keywords to a post type Review data. |
|
| 207 | - * |
|
| 208 | - * @api string $taxonomy The chosen taxonomy. |
|
| 209 | - */ |
|
| 210 | - $taxonomy = apply_filters( 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy', $taxonomy ); |
|
| 211 | - return LSX_Schema_Utils::add_terms( $data, $this->context->id, $data_key, $taxonomy ); |
|
| 212 | - } |
|
| 213 | - /** |
|
| 214 | - * Adds the custom field value for the supplied key |
|
| 215 | - * |
|
| 216 | - * @param array $data Schema data. |
|
| 217 | - * @param string $data_key the parameter name you wish to assign it to. |
|
| 218 | - * @param string $meta_key the taxonomy to grab terms for. |
|
| 219 | - * @param boolean $single A single custom field or an array |
|
| 220 | - * |
|
| 221 | - * @return array $data Review data. |
|
| 222 | - */ |
|
| 223 | - public function add_custom_field( $data, $data_key, $meta_key, $single = true ) { |
|
| 224 | - $value = get_post_meta( $this->context->id, $meta_key, $single ); |
|
| 225 | - if ( '' !== $value && false !== $value ) { |
|
| 226 | - $data[ $data_key ] = $value; |
|
| 227 | - } |
|
| 228 | - return $data; |
|
| 229 | - } |
|
| 230 | - } |
|
| 14 | + class LSX_Schema_Graph_Piece implements WPSEO_Graph_Piece { |
|
| 15 | + /** |
|
| 16 | + * A value object with context variables. |
|
| 17 | + * |
|
| 18 | + * @var \WPSEO_Schema_Context |
|
| 19 | + */ |
|
| 20 | + public $context; |
|
| 21 | + /** |
|
| 22 | + * This is the post type that you want the piece to output for. |
|
| 23 | + * |
|
| 24 | + * @var string; |
|
| 25 | + */ |
|
| 26 | + public $post_type; |
|
| 27 | + /** |
|
| 28 | + * If this is a top level parent |
|
| 29 | + * |
|
| 30 | + * @var boolean |
|
| 31 | + */ |
|
| 32 | + public $is_top_level; |
|
| 33 | + /** |
|
| 34 | + * This holds the meta_key => scehma_type of the fields you want to add to your subtrip. |
|
| 35 | + * |
|
| 36 | + * @var array() |
|
| 37 | + */ |
|
| 38 | + public $place_ids; |
|
| 39 | + /** |
|
| 40 | + * This holds an object or the current trip post. |
|
| 41 | + * |
|
| 42 | + * @var WP_Post(); |
|
| 43 | + */ |
|
| 44 | + public $post; |
|
| 45 | + /** |
|
| 46 | + * This holds URL for the trip |
|
| 47 | + * |
|
| 48 | + * @var string |
|
| 49 | + */ |
|
| 50 | + public $post_url; |
|
| 51 | + /** |
|
| 52 | + * Constructor. |
|
| 53 | + * |
|
| 54 | + * @param \WPSEO_Schema_Context $context A value object with context variables. |
|
| 55 | + */ |
|
| 56 | + public function __construct( WPSEO_Schema_Context $context ) { |
|
| 57 | + $this->context = $context; |
|
| 58 | + $this->place_ids = array(); |
|
| 59 | + $this->post = get_post( $this->context->id ); |
|
| 60 | + $this->post_url = get_permalink( $this->context->id ); |
|
| 61 | + $this->is_top_level = false; |
|
| 62 | + if ( is_object( $this->post ) && isset( $this->post->post_parent ) && ( false === $this->post->post_parent || 0 === $this->post->post_parent || '' === $this->post->post_parent ) ) { |
|
| 63 | + $this->is_top_level = true; |
|
| 64 | + } |
|
| 65 | + } |
|
| 66 | + /** |
|
| 67 | + * Determines whether or not a piece should be added to the graph. |
|
| 68 | + * |
|
| 69 | + * @return bool |
|
| 70 | + */ |
|
| 71 | + public function is_needed() { |
|
| 72 | + if ( ! is_singular() ) { |
|
| 73 | + return false; |
|
| 74 | + } |
|
| 75 | + if ( false === $this->context->site_represents ) { |
|
| 76 | + return false; |
|
| 77 | + } |
|
| 78 | + return LSX_Schema_Utils::is_type( get_post_type(), $this->post_type ); |
|
| 79 | + } |
|
| 80 | + /** |
|
| 81 | + * Returns Review data. |
|
| 82 | + * |
|
| 83 | + * @return array $data Review data. |
|
| 84 | + */ |
|
| 85 | + public function generate() { |
|
| 86 | + $data = array(); |
|
| 87 | + return $data; |
|
| 88 | + } |
|
| 89 | + /** |
|
| 90 | + * Gets the connected reviews post type and set it as the "Review" schema |
|
| 91 | + * |
|
| 92 | + * @param array $data An array of offers already added. |
|
| 93 | + * @param string $data_key |
|
| 94 | + * @param boolean $include_aggregate |
|
| 95 | + * @return array $data |
|
| 96 | + */ |
|
| 97 | + public function add_reviews( $data, $data_key = 'reviews', $include_aggregate = true ) { |
|
| 98 | + $reviews = get_post_meta( $this->context->id, 'review_to_' . $this->post_type, false ); |
|
| 99 | + $reviews_array = array(); |
|
| 100 | + if ( ! empty( $reviews ) ) { |
|
| 101 | + $aggregate_value = 1; |
|
| 102 | + $review_count = 0; |
|
| 103 | + foreach ( $reviews as $review_id ) { |
|
| 104 | + $rating = get_post_meta( $review_id, 'rating', true ); |
|
| 105 | + $author = get_post_meta( $review_id, 'reviewer_name', true ); |
|
| 106 | + $description = wp_strip_all_tags( get_the_excerpt( $review_id ) ); |
|
| 107 | + $review_args = array( |
|
| 108 | + 'author' => $author, |
|
| 109 | + 'reviewBody' => $description, |
|
| 110 | + ); |
|
| 111 | + // Add in the review rating. |
|
| 112 | + if ( false !== $rating && '' !== $rating && '0' !== $rating && 0 !== $rating ) { |
|
| 113 | + $review_args['reviewRating'] = array( |
|
| 114 | + '@type' => 'Rating', |
|
| 115 | + 'ratingValue' => $rating, |
|
| 116 | + ); |
|
| 117 | + } |
|
| 118 | + $reviews_array = LSX_Schema_Utils::add_review( $reviews_array, $review_id, $this->context, $review_args ); |
|
| 119 | + $review_count++; |
|
| 120 | + } |
|
| 121 | + if ( ! empty( $reviews_array ) ) { |
|
| 122 | + if ( true === $include_aggregate ) { |
|
| 123 | + $data['aggregateRating'] = array( |
|
| 124 | + '@type' => 'AggregateRating', |
|
| 125 | + 'ratingValue' => (string) $aggregate_value, |
|
| 126 | + 'reviewCount' => (string) $review_count, |
|
| 127 | + 'bestRating' => '5', |
|
| 128 | + 'worstRating' => '1', |
|
| 129 | + ); |
|
| 130 | + } |
|
| 131 | + $data[ $data_key ] = $reviews_array; |
|
| 132 | + } |
|
| 133 | + } |
|
| 134 | + return $data; |
|
| 135 | + } |
|
| 136 | + /** |
|
| 137 | + * Gets the connected posts and set it as the "Article" schema |
|
| 138 | + * |
|
| 139 | + * @param array $data An array of offers already added. |
|
| 140 | + * @param string $data_key |
|
| 141 | + * @return array $data |
|
| 142 | + */ |
|
| 143 | + public function add_articles( $data, $data_key = 'subjectOf' ) { |
|
| 144 | + $posts = get_post_meta( $this->context->id, 'post_to_' . $this->post_type, false ); |
|
| 145 | + $posts_array = array(); |
|
| 146 | + if ( ! empty( $posts ) ) { |
|
| 147 | + foreach ( $posts as $post_id ) { |
|
| 148 | + $post_args = array( |
|
| 149 | + 'articleBody' => wp_strip_all_tags( get_the_excerpt( $post_id ) ), |
|
| 150 | + 'headline' => get_the_title( $post_id ), |
|
| 151 | + ); |
|
| 152 | + $section = get_the_term_list( $post_id, 'category' ); |
|
| 153 | + if ( ! is_wp_error( $section ) && '' !== $section && false !== $section ) { |
|
| 154 | + $post_args['articleSection'] = wp_strip_all_tags( $section ); |
|
| 155 | + } |
|
| 156 | + if ( $this->context->site_represents_reference ) { |
|
| 157 | + $post_args['publisher'] = $this->context->site_represents_reference; |
|
| 158 | + } |
|
| 159 | + $image_url = get_the_post_thumbnail_url( $post_id, 'lsx-thumbnail-wide' ); |
|
| 160 | + if ( false !== $image_url ) { |
|
| 161 | + $post_args['image'] = $image_url; |
|
| 162 | + } |
|
| 163 | + $posts_array = LSX_Schema_Utils::add_article( $posts_array, $post_id, $this->context, $post_args ); |
|
| 164 | + } |
|
| 165 | + if ( ! empty( $posts_array ) ) { |
|
| 166 | + $data[ $data_key ] = $posts_array; |
|
| 167 | + } |
|
| 168 | + } |
|
| 169 | + return $data; |
|
| 170 | + } |
|
| 171 | + /** |
|
| 172 | + * Adds the Project and Testimonials attached to the Team Member |
|
| 173 | + * |
|
| 174 | + * @param array $data |
|
| 175 | + * |
|
| 176 | + * @return array $data |
|
| 177 | + */ |
|
| 178 | + public function add_connections( $data ) { |
|
| 179 | + $connections_array = array(); |
|
| 180 | + if ( $this->is_top_level ) { |
|
| 181 | + $connections_array = $this->add_regions( $connections_array ); |
|
| 182 | + $connections_array = $this->add_accommodation( $connections_array ); |
|
| 183 | + if ( ! empty( $connections_array ) ) { |
|
| 184 | + $data['containsPlace'] = $connections_array; |
|
| 185 | + } |
|
| 186 | + } else { |
|
| 187 | + $connections_array = $this->add_countries( $connections_array ); |
|
| 188 | + $data['containedInPlace'] = $connections_array; |
|
| 189 | + $connections_array = array(); |
|
| 190 | + $connections_array = $this->add_accommodation( $connections_array ); |
|
| 191 | + $data['containsPlace'] = $connections_array; |
|
| 192 | + } |
|
| 193 | + return $data; |
|
| 194 | + } |
|
| 195 | + /** |
|
| 196 | + * Adds the terms for the taxonomy |
|
| 197 | + * |
|
| 198 | + * @param array $data Review data. |
|
| 199 | + * @param array $data_key the parameter name you wish to assign it to. |
|
| 200 | + * @param array $taxonomy the taxonomy to grab terms for. |
|
| 201 | + * |
|
| 202 | + * @return array $data Review data. |
|
| 203 | + */ |
|
| 204 | + public function add_taxonomy_terms( $data, $data_key, $taxonomy ) { |
|
| 205 | + /** |
|
| 206 | + * Filter: 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy' - Allow changing the taxonomy used to assign keywords to a post type Review data. |
|
| 207 | + * |
|
| 208 | + * @api string $taxonomy The chosen taxonomy. |
|
| 209 | + */ |
|
| 210 | + $taxonomy = apply_filters( 'lsx_schema_' . $this->post_type . '_' . $data_key . '_taxonomy', $taxonomy ); |
|
| 211 | + return LSX_Schema_Utils::add_terms( $data, $this->context->id, $data_key, $taxonomy ); |
|
| 212 | + } |
|
| 213 | + /** |
|
| 214 | + * Adds the custom field value for the supplied key |
|
| 215 | + * |
|
| 216 | + * @param array $data Schema data. |
|
| 217 | + * @param string $data_key the parameter name you wish to assign it to. |
|
| 218 | + * @param string $meta_key the taxonomy to grab terms for. |
|
| 219 | + * @param boolean $single A single custom field or an array |
|
| 220 | + * |
|
| 221 | + * @return array $data Review data. |
|
| 222 | + */ |
|
| 223 | + public function add_custom_field( $data, $data_key, $meta_key, $single = true ) { |
|
| 224 | + $value = get_post_meta( $this->context->id, $meta_key, $single ); |
|
| 225 | + if ( '' !== $value && false !== $value ) { |
|
| 226 | + $data[ $data_key ] = $value; |
|
| 227 | + } |
|
| 228 | + return $data; |
|
| 229 | + } |
|
| 230 | + } |
|
| 231 | 231 | } |
@@ -8,77 +8,77 @@ |
||
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | 10 | if ( ! defined( 'ABSPATH' ) ) { |
| 11 | - exit; |
|
| 11 | + exit; |
|
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | if ( ! class_exists( 'WP_Customize_Control' ) ) { |
| 15 | - return; |
|
| 15 | + return; |
|
| 16 | 16 | } |
| 17 | 17 | |
| 18 | 18 | if ( ! class_exists( 'LSX_Customize_Layout_Control' ) ) : |
| 19 | 19 | |
| 20 | - /** |
|
| 21 | - * LSX_Customize_Layout_Control Class. |
|
| 22 | - * |
|
| 23 | - * @package lsx |
|
| 24 | - * @subpackage customizer |
|
| 25 | - * @category layout |
|
| 26 | - */ |
|
| 27 | - class LSX_Customize_Layout_Control extends WP_Customize_Control { |
|
| 20 | + /** |
|
| 21 | + * LSX_Customize_Layout_Control Class. |
|
| 22 | + * |
|
| 23 | + * @package lsx |
|
| 24 | + * @subpackage customizer |
|
| 25 | + * @category layout |
|
| 26 | + */ |
|
| 27 | + class LSX_Customize_Layout_Control extends WP_Customize_Control { |
|
| 28 | 28 | |
| 29 | - public $type = 'layout'; |
|
| 30 | - public $statuses; |
|
| 31 | - public $layouts = array(); |
|
| 29 | + public $type = 'layout'; |
|
| 30 | + public $statuses; |
|
| 31 | + public $layouts = array(); |
|
| 32 | 32 | |
| 33 | - public function __construct( $manager, $id, $args = array() ) { |
|
| 34 | - parent::__construct( $manager, $id, $args ); |
|
| 35 | - if ( ! empty( $args['choices'] ) ) { |
|
| 36 | - $this->layouts = $args['choices']; |
|
| 37 | - } |
|
| 38 | - } |
|
| 33 | + public function __construct( $manager, $id, $args = array() ) { |
|
| 34 | + parent::__construct( $manager, $id, $args ); |
|
| 35 | + if ( ! empty( $args['choices'] ) ) { |
|
| 36 | + $this->layouts = $args['choices']; |
|
| 37 | + } |
|
| 38 | + } |
|
| 39 | 39 | |
| 40 | - /** |
|
| 41 | - * Enqueue scripts/styles for the color picker. |
|
| 42 | - */ |
|
| 43 | - public function enqueue() { |
|
| 44 | - wp_enqueue_script( 'lsx-layout-control', get_template_directory_uri() . '/assets/js/admin/customizer-layout.js', array( 'jquery' ), LSX_VERSION, true ); |
|
| 45 | - } |
|
| 40 | + /** |
|
| 41 | + * Enqueue scripts/styles for the color picker. |
|
| 42 | + */ |
|
| 43 | + public function enqueue() { |
|
| 44 | + wp_enqueue_script( 'lsx-layout-control', get_template_directory_uri() . '/assets/js/admin/customizer-layout.js', array( 'jquery' ), LSX_VERSION, true ); |
|
| 45 | + } |
|
| 46 | 46 | |
| 47 | - /** |
|
| 48 | - * Render output. |
|
| 49 | - */ |
|
| 50 | - public function render_content() { |
|
| 51 | - $post_id = 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) ); |
|
| 52 | - $class = 'customize-control customize-control-' . $this->type; |
|
| 53 | - $value = $this->value(); |
|
| 54 | - ?> |
|
| 47 | + /** |
|
| 48 | + * Render output. |
|
| 49 | + */ |
|
| 50 | + public function render_content() { |
|
| 51 | + $post_id = 'customize-control-' . str_replace( '[', '-', str_replace( ']', '', $this->id ) ); |
|
| 52 | + $class = 'customize-control customize-control-' . $this->type; |
|
| 53 | + $value = $this->value(); |
|
| 54 | + ?> |
|
| 55 | 55 | <label> |
| 56 | 56 | <?php |
| 57 | - if ( ! empty( $this->label ) ) { |
|
| 58 | - ?> |
|
| 57 | + if ( ! empty( $this->label ) ) { |
|
| 58 | + ?> |
|
| 59 | 59 | <span class="customize-control-title"><?php echo esc_html( $this->label ); ?></span> |
| 60 | 60 | <?php |
| 61 | - } |
|
| 62 | - if ( ! empty( $this->description ) ) { |
|
| 63 | - ?> |
|
| 61 | + } |
|
| 62 | + if ( ! empty( $this->description ) ) { |
|
| 63 | + ?> |
|
| 64 | 64 | <span class="description customize-control-description"><?php echo esc_html( $this->description ); ?></span> |
| 65 | 65 | <?php } ?> |
| 66 | 66 | <div class="layouts-selector"> |
| 67 | 67 | <?php |
| 68 | - foreach ( $this->layouts as $layout ) { |
|
| 69 | - $sel = 'border: 1px solid transparent;'; |
|
| 70 | - if ( $value === $layout ) { |
|
| 71 | - $sel = 'border: 1px solid rgb(43, 166, 203);'; |
|
| 72 | - } |
|
| 73 | - echo '<img class="layout-button" style="padding:2px;' . esc_attr( $sel ) . '" src="' . esc_attr( get_template_directory_uri() ) . '/assets/images/admin/' . esc_attr( $layout ) . '.png" data-option="' . esc_attr( $layout ) . '">'; |
|
| 74 | - } |
|
| 75 | - ?> |
|
| 68 | + foreach ( $this->layouts as $layout ) { |
|
| 69 | + $sel = 'border: 1px solid transparent;'; |
|
| 70 | + if ( $value === $layout ) { |
|
| 71 | + $sel = 'border: 1px solid rgb(43, 166, 203);'; |
|
| 72 | + } |
|
| 73 | + echo '<img class="layout-button" style="padding:2px;' . esc_attr( $sel ) . '" src="' . esc_attr( get_template_directory_uri() ) . '/assets/images/admin/' . esc_attr( $layout ) . '.png" data-option="' . esc_attr( $layout ) . '">'; |
|
| 74 | + } |
|
| 75 | + ?> |
|
| 76 | 76 | <input <?php $this->link(); ?> class="selected-layout <?php echo esc_attr( $class ); ?>" id="<?php echo esc_attr( $post_id ); ?>" type="hidden" value="<?php echo esc_attr( $value ); ?>" <?php $this->input_attrs(); ?>> |
| 77 | 77 | </div> |
| 78 | 78 | </label> |
| 79 | 79 | <?php |
| 80 | - } |
|
| 80 | + } |
|
| 81 | 81 | |
| 82 | - } |
|
| 82 | + } |
|
| 83 | 83 | |
| 84 | 84 | endif; |
@@ -8,232 +8,232 @@ |
||
| 8 | 8 | */ |
| 9 | 9 | |
| 10 | 10 | if ( ! defined( 'ABSPATH' ) ) { |
| 11 | - exit; |
|
| 11 | + exit; |
|
| 12 | 12 | } |
| 13 | 13 | |
| 14 | 14 | if ( ! class_exists( 'Walker_Nav_Menu' ) ) { |
| 15 | - return; |
|
| 15 | + return; |
|
| 16 | 16 | } |
| 17 | 17 | |
| 18 | 18 | if ( ! class_exists( 'LSX_Bootstrap_Navwalker' ) ) : |
| 19 | 19 | |
| 20 | - /** |
|
| 21 | - * Cleaner Bootstrap walker |
|
| 22 | - * |
|
| 23 | - * @package lsx |
|
| 24 | - * @subpackage navigation |
|
| 25 | - * @category bootstrap-navigation-walker |
|
| 26 | - */ |
|
| 27 | - class LSX_Bootstrap_Navwalker extends Walker_Nav_Menu { |
|
| 28 | - |
|
| 29 | - /** |
|
| 30 | - * Used to append additional content. |
|
| 31 | - * |
|
| 32 | - * @see Walker::start_lvl() |
|
| 33 | - * @since 3.0.0 |
|
| 34 | - * |
|
| 35 | - * @param string $output Passed by reference. Used to append additional content. |
|
| 36 | - * @param int $depth Depth of page. Used for padding. |
|
| 37 | - */ |
|
| 38 | - public function start_lvl( &$output, $depth = 0, $args = array() ) { |
|
| 39 | - $indent = str_repeat( "\t", $depth ); |
|
| 40 | - $output .= "\n$indent<ul role=\"menu\" class=\" dropdown-menu\">\n"; |
|
| 41 | - } |
|
| 42 | - |
|
| 43 | - /** |
|
| 44 | - * Used to append additional content. |
|
| 45 | - * @param string $item Passed by reference. |
|
| 46 | - */ |
|
| 47 | - public function filter_default_pages( &$item ) { |
|
| 48 | - return $item; |
|
| 49 | - } |
|
| 50 | - |
|
| 51 | - /** |
|
| 52 | - * @see Walker::start_el() |
|
| 53 | - * @since 3.0.0 |
|
| 54 | - * |
|
| 55 | - * @param string $output Passed by reference. Used to append additional content. |
|
| 56 | - * @param object $item Menu item data object. |
|
| 57 | - * @param int $depth Depth of menu item. Used for padding. |
|
| 58 | - * @param int $current_page Menu item ID. |
|
| 59 | - * @param object $args |
|
| 60 | - */ |
|
| 61 | - public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { |
|
| 62 | - $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; |
|
| 63 | - |
|
| 64 | - /** |
|
| 65 | - * If this is a default menu being called we need to fix |
|
| 66 | - * the item object thats coming through. |
|
| 67 | - */ |
|
| 68 | - if ( ! isset( $item->title ) ) { |
|
| 69 | - return; |
|
| 70 | - } |
|
| 71 | - |
|
| 72 | - /** |
|
| 73 | - * Dividers, Headers or Disabled |
|
| 74 | - * ============================= |
|
| 75 | - * Determine whether the item is a Divider, Header, Disabled or regular |
|
| 76 | - * menu item. To prevent errors we use the strcasecmp() function to so a |
|
| 77 | - * comparison that is not case sensitive. The strcasecmp() function returns |
|
| 78 | - * a 0 if the strings are equal. |
|
| 79 | - */ |
|
| 80 | - if ( 0 == strcasecmp( $item->attr_title, 'divider' ) && 1 === $depth ) { |
|
| 81 | - $output .= $indent . '<li role="presentation" class="divider">'; |
|
| 82 | - } elseif ( 0 == strcasecmp( $item->title, 'divider' ) && 1 === $depth ) { |
|
| 83 | - $output .= $indent . '<li role="presentation" class="divider">'; |
|
| 84 | - } elseif ( 0 == strcasecmp( $item->attr_title, 'dropdown-header' ) && 1 === $depth ) { |
|
| 85 | - $output .= $indent . '<li role="presentation" class="dropdown-header">' . esc_attr( $item->title ); |
|
| 86 | - } elseif ( 0 == strcasecmp( $item->attr_title, 'disabled' ) ) { |
|
| 87 | - $output .= $indent . '<li role="presentation" class="disabled"><a href="#">' . esc_attr( $item->title ) . '</a>'; |
|
| 88 | - } else { |
|
| 89 | - $class_names = ''; |
|
| 90 | - $value = ''; |
|
| 91 | - |
|
| 92 | - $classes = empty( $item->classes ) ? array() : (array) $item->classes; |
|
| 93 | - $classes[] = 'menu-item-' . $item->ID; |
|
| 94 | - |
|
| 95 | - $classes = apply_filters( 'lsx_nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ); |
|
| 96 | - |
|
| 97 | - $class_names = join( ' ', $classes ); |
|
| 98 | - |
|
| 99 | - if ( $args->has_children ) |
|
| 100 | - $class_names .= ' dropdown'; |
|
| 101 | - |
|
| 102 | - if ( in_array( 'current-menu-item', $classes ) ) |
|
| 103 | - $class_names .= ' active'; |
|
| 104 | - |
|
| 105 | - if ( in_array( 'current-menu-parent', $classes ) ) |
|
| 106 | - $class_names .= ' active'; |
|
| 107 | - |
|
| 108 | - //Check if this is ment to be a "social" type menu |
|
| 109 | - $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : ''; |
|
| 110 | - |
|
| 111 | - $id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args ); |
|
| 112 | - $id = $id ? ' id="' . esc_attr( $id ) . '"' : ''; |
|
| 113 | - |
|
| 114 | - $output .= $indent . '<li' . $id . $value . $class_names . '>'; |
|
| 115 | - |
|
| 116 | - $atts = array(); |
|
| 117 | - $atts['title'] = ! empty( $item->attr_title ) ? $item->attr_title : $item->title; |
|
| 118 | - $atts['target'] = ! empty( $item->target ) ? $item->target : ''; |
|
| 119 | - $atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : ''; |
|
| 120 | - |
|
| 121 | - // If item has_children add atts to a. |
|
| 122 | - if ( $args->has_children ) { |
|
| 123 | - $atts['href'] = ! empty( $item->url ) ? $item->url : ''; |
|
| 124 | - $atts['data-toggle'] = 'dropdown'; |
|
| 125 | - $atts['class'] = 'dropdown-toggle'; |
|
| 126 | - $atts['aria-haspopup'] = 'true'; |
|
| 127 | - } else { |
|
| 128 | - $atts['href'] = ! empty( $item->url ) ? $item->url : ''; |
|
| 129 | - } |
|
| 130 | - |
|
| 131 | - $atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args ); |
|
| 132 | - |
|
| 133 | - $attributes = ''; |
|
| 134 | - foreach ( $atts as $attr => $value ) { |
|
| 135 | - if ( ! empty( $value ) ) { |
|
| 136 | - $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value ); |
|
| 137 | - $attributes .= ' ' . $attr . '="' . $value . '"'; |
|
| 138 | - } |
|
| 139 | - } |
|
| 140 | - |
|
| 141 | - $item_output = $args->before; |
|
| 142 | - |
|
| 143 | - $item_output .= '<a' . $attributes . '>'; |
|
| 144 | - $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after; |
|
| 145 | - $item_output .= ( $args->has_children && 0 === $depth ) ? ' <span class="caret"></span></a>' : '</a>'; |
|
| 146 | - $item_output .= $args->after; |
|
| 147 | - |
|
| 148 | - $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); |
|
| 149 | - } |
|
| 150 | - } |
|
| 151 | - |
|
| 152 | - /** |
|
| 153 | - * Traverse elements to create list from elements. |
|
| 154 | - * |
|
| 155 | - * Display one element if the element doesn't have any children otherwise, |
|
| 156 | - * display the element and its children. Will only traverse up to the max |
|
| 157 | - * depth and no ignore elements under that depth. |
|
| 158 | - * |
|
| 159 | - * This method shouldn't be called directly, use the walk() method instead. |
|
| 160 | - * |
|
| 161 | - * @see Walker::start_el() |
|
| 162 | - * @since 2.5.0 |
|
| 163 | - * |
|
| 164 | - * @param object $element Data object |
|
| 165 | - * @param array $children_elements List of elements to continue traversing. |
|
| 166 | - * @param int $max_depth Max depth to traverse. |
|
| 167 | - * @param int $depth Depth of current element. |
|
| 168 | - * @param array $args |
|
| 169 | - * @param string $output Passed by reference. Used to append additional content. |
|
| 170 | - * @return null Null on failure with no changes to parameters. |
|
| 171 | - */ |
|
| 172 | - public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) { |
|
| 173 | - if ( ! $element ) { |
|
| 174 | - return; |
|
| 175 | - } |
|
| 176 | - |
|
| 177 | - $id_field = $this->db_fields['id']; |
|
| 178 | - |
|
| 179 | - if ( is_object( $args[0] ) ) { |
|
| 180 | - $args[0]->has_children = ! empty( $children_elements[ $element->$id_field ] ); |
|
| 181 | - } |
|
| 182 | - |
|
| 183 | - parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); |
|
| 184 | - } |
|
| 185 | - |
|
| 186 | - /** |
|
| 187 | - * Menu Fallback |
|
| 188 | - * ============= |
|
| 189 | - * If this function is assigned to the wp_nav_menu's fallback_cb variable |
|
| 190 | - * and a manu has not been assigned to the theme location in the WordPress |
|
| 191 | - * menu manager the function with display nothing to a non-logged in user, |
|
| 192 | - * and will add a link to the WordPress menu manager if logged in as an admin. |
|
| 193 | - * |
|
| 194 | - * @param array $args passed from the wp_nav_menu function. |
|
| 195 | - * |
|
| 196 | - */ |
|
| 197 | - public static function fallback( $args ) { |
|
| 198 | - if ( current_user_can( 'manage_options' ) ) { |
|
| 199 | - $fb_output = null; |
|
| 200 | - |
|
| 201 | - if ( $args['container'] ) { |
|
| 202 | - $fb_output = '<' . $args['container']; |
|
| 203 | - |
|
| 204 | - if ( $args['container_id'] ) { |
|
| 205 | - $fb_output .= ' id="' . $args['container_id'] . '"'; |
|
| 206 | - } |
|
| 207 | - |
|
| 208 | - if ( $args['container_class'] ) { |
|
| 209 | - $fb_output .= ' class="' . $args['container_class'] . '"'; |
|
| 210 | - } |
|
| 211 | - |
|
| 212 | - $fb_output .= '>'; |
|
| 213 | - } |
|
| 214 | - |
|
| 215 | - $fb_output .= '<ul'; |
|
| 216 | - |
|
| 217 | - if ( $args['menu_id'] ) { |
|
| 218 | - $fb_output .= ' id="' . $args['menu_id'] . '"'; |
|
| 219 | - } |
|
| 220 | - |
|
| 221 | - if ( $args['menu_class'] ) { |
|
| 222 | - $fb_output .= ' class="' . $args['menu_class'] . '"'; |
|
| 223 | - } |
|
| 224 | - |
|
| 225 | - $fb_output .= '>'; |
|
| 226 | - $fb_output .= '<li><a href="' . esc_url( admin_url( 'nav-menus.php' ) ) . '">' . esc_html__( 'Add a menu', 'lsx' ) . '</a></li>'; |
|
| 227 | - $fb_output .= '</ul>'; |
|
| 228 | - |
|
| 229 | - if ( $args['container'] ) { |
|
| 230 | - $fb_output .= '</' . $args['container'] . '>'; |
|
| 231 | - } |
|
| 232 | - |
|
| 233 | - echo wp_kses_post( $fb_output ); |
|
| 234 | - } |
|
| 235 | - } |
|
| 236 | - |
|
| 237 | - } |
|
| 20 | + /** |
|
| 21 | + * Cleaner Bootstrap walker |
|
| 22 | + * |
|
| 23 | + * @package lsx |
|
| 24 | + * @subpackage navigation |
|
| 25 | + * @category bootstrap-navigation-walker |
|
| 26 | + */ |
|
| 27 | + class LSX_Bootstrap_Navwalker extends Walker_Nav_Menu { |
|
| 28 | + |
|
| 29 | + /** |
|
| 30 | + * Used to append additional content. |
|
| 31 | + * |
|
| 32 | + * @see Walker::start_lvl() |
|
| 33 | + * @since 3.0.0 |
|
| 34 | + * |
|
| 35 | + * @param string $output Passed by reference. Used to append additional content. |
|
| 36 | + * @param int $depth Depth of page. Used for padding. |
|
| 37 | + */ |
|
| 38 | + public function start_lvl( &$output, $depth = 0, $args = array() ) { |
|
| 39 | + $indent = str_repeat( "\t", $depth ); |
|
| 40 | + $output .= "\n$indent<ul role=\"menu\" class=\" dropdown-menu\">\n"; |
|
| 41 | + } |
|
| 42 | + |
|
| 43 | + /** |
|
| 44 | + * Used to append additional content. |
|
| 45 | + * @param string $item Passed by reference. |
|
| 46 | + */ |
|
| 47 | + public function filter_default_pages( &$item ) { |
|
| 48 | + return $item; |
|
| 49 | + } |
|
| 50 | + |
|
| 51 | + /** |
|
| 52 | + * @see Walker::start_el() |
|
| 53 | + * @since 3.0.0 |
|
| 54 | + * |
|
| 55 | + * @param string $output Passed by reference. Used to append additional content. |
|
| 56 | + * @param object $item Menu item data object. |
|
| 57 | + * @param int $depth Depth of menu item. Used for padding. |
|
| 58 | + * @param int $current_page Menu item ID. |
|
| 59 | + * @param object $args |
|
| 60 | + */ |
|
| 61 | + public function start_el( &$output, $item, $depth = 0, $args = array(), $id = 0 ) { |
|
| 62 | + $indent = ( $depth ) ? str_repeat( "\t", $depth ) : ''; |
|
| 63 | + |
|
| 64 | + /** |
|
| 65 | + * If this is a default menu being called we need to fix |
|
| 66 | + * the item object thats coming through. |
|
| 67 | + */ |
|
| 68 | + if ( ! isset( $item->title ) ) { |
|
| 69 | + return; |
|
| 70 | + } |
|
| 71 | + |
|
| 72 | + /** |
|
| 73 | + * Dividers, Headers or Disabled |
|
| 74 | + * ============================= |
|
| 75 | + * Determine whether the item is a Divider, Header, Disabled or regular |
|
| 76 | + * menu item. To prevent errors we use the strcasecmp() function to so a |
|
| 77 | + * comparison that is not case sensitive. The strcasecmp() function returns |
|
| 78 | + * a 0 if the strings are equal. |
|
| 79 | + */ |
|
| 80 | + if ( 0 == strcasecmp( $item->attr_title, 'divider' ) && 1 === $depth ) { |
|
| 81 | + $output .= $indent . '<li role="presentation" class="divider">'; |
|
| 82 | + } elseif ( 0 == strcasecmp( $item->title, 'divider' ) && 1 === $depth ) { |
|
| 83 | + $output .= $indent . '<li role="presentation" class="divider">'; |
|
| 84 | + } elseif ( 0 == strcasecmp( $item->attr_title, 'dropdown-header' ) && 1 === $depth ) { |
|
| 85 | + $output .= $indent . '<li role="presentation" class="dropdown-header">' . esc_attr( $item->title ); |
|
| 86 | + } elseif ( 0 == strcasecmp( $item->attr_title, 'disabled' ) ) { |
|
| 87 | + $output .= $indent . '<li role="presentation" class="disabled"><a href="#">' . esc_attr( $item->title ) . '</a>'; |
|
| 88 | + } else { |
|
| 89 | + $class_names = ''; |
|
| 90 | + $value = ''; |
|
| 91 | + |
|
| 92 | + $classes = empty( $item->classes ) ? array() : (array) $item->classes; |
|
| 93 | + $classes[] = 'menu-item-' . $item->ID; |
|
| 94 | + |
|
| 95 | + $classes = apply_filters( 'lsx_nav_menu_css_class', array_filter( $classes ), $item, $args, $depth ); |
|
| 96 | + |
|
| 97 | + $class_names = join( ' ', $classes ); |
|
| 98 | + |
|
| 99 | + if ( $args->has_children ) |
|
| 100 | + $class_names .= ' dropdown'; |
|
| 101 | + |
|
| 102 | + if ( in_array( 'current-menu-item', $classes ) ) |
|
| 103 | + $class_names .= ' active'; |
|
| 104 | + |
|
| 105 | + if ( in_array( 'current-menu-parent', $classes ) ) |
|
| 106 | + $class_names .= ' active'; |
|
| 107 | + |
|
| 108 | + //Check if this is ment to be a "social" type menu |
|
| 109 | + $class_names = $class_names ? ' class="' . esc_attr( $class_names ) . '"' : ''; |
|
| 110 | + |
|
| 111 | + $id = apply_filters( 'nav_menu_item_id', 'menu-item-' . $item->ID, $item, $args ); |
|
| 112 | + $id = $id ? ' id="' . esc_attr( $id ) . '"' : ''; |
|
| 113 | + |
|
| 114 | + $output .= $indent . '<li' . $id . $value . $class_names . '>'; |
|
| 115 | + |
|
| 116 | + $atts = array(); |
|
| 117 | + $atts['title'] = ! empty( $item->attr_title ) ? $item->attr_title : $item->title; |
|
| 118 | + $atts['target'] = ! empty( $item->target ) ? $item->target : ''; |
|
| 119 | + $atts['rel'] = ! empty( $item->xfn ) ? $item->xfn : ''; |
|
| 120 | + |
|
| 121 | + // If item has_children add atts to a. |
|
| 122 | + if ( $args->has_children ) { |
|
| 123 | + $atts['href'] = ! empty( $item->url ) ? $item->url : ''; |
|
| 124 | + $atts['data-toggle'] = 'dropdown'; |
|
| 125 | + $atts['class'] = 'dropdown-toggle'; |
|
| 126 | + $atts['aria-haspopup'] = 'true'; |
|
| 127 | + } else { |
|
| 128 | + $atts['href'] = ! empty( $item->url ) ? $item->url : ''; |
|
| 129 | + } |
|
| 130 | + |
|
| 131 | + $atts = apply_filters( 'nav_menu_link_attributes', $atts, $item, $args ); |
|
| 132 | + |
|
| 133 | + $attributes = ''; |
|
| 134 | + foreach ( $atts as $attr => $value ) { |
|
| 135 | + if ( ! empty( $value ) ) { |
|
| 136 | + $value = ( 'href' === $attr ) ? esc_url( $value ) : esc_attr( $value ); |
|
| 137 | + $attributes .= ' ' . $attr . '="' . $value . '"'; |
|
| 138 | + } |
|
| 139 | + } |
|
| 140 | + |
|
| 141 | + $item_output = $args->before; |
|
| 142 | + |
|
| 143 | + $item_output .= '<a' . $attributes . '>'; |
|
| 144 | + $item_output .= $args->link_before . apply_filters( 'the_title', $item->title, $item->ID ) . $args->link_after; |
|
| 145 | + $item_output .= ( $args->has_children && 0 === $depth ) ? ' <span class="caret"></span></a>' : '</a>'; |
|
| 146 | + $item_output .= $args->after; |
|
| 147 | + |
|
| 148 | + $output .= apply_filters( 'walker_nav_menu_start_el', $item_output, $item, $depth, $args ); |
|
| 149 | + } |
|
| 150 | + } |
|
| 151 | + |
|
| 152 | + /** |
|
| 153 | + * Traverse elements to create list from elements. |
|
| 154 | + * |
|
| 155 | + * Display one element if the element doesn't have any children otherwise, |
|
| 156 | + * display the element and its children. Will only traverse up to the max |
|
| 157 | + * depth and no ignore elements under that depth. |
|
| 158 | + * |
|
| 159 | + * This method shouldn't be called directly, use the walk() method instead. |
|
| 160 | + * |
|
| 161 | + * @see Walker::start_el() |
|
| 162 | + * @since 2.5.0 |
|
| 163 | + * |
|
| 164 | + * @param object $element Data object |
|
| 165 | + * @param array $children_elements List of elements to continue traversing. |
|
| 166 | + * @param int $max_depth Max depth to traverse. |
|
| 167 | + * @param int $depth Depth of current element. |
|
| 168 | + * @param array $args |
|
| 169 | + * @param string $output Passed by reference. Used to append additional content. |
|
| 170 | + * @return null Null on failure with no changes to parameters. |
|
| 171 | + */ |
|
| 172 | + public function display_element( $element, &$children_elements, $max_depth, $depth, $args, &$output ) { |
|
| 173 | + if ( ! $element ) { |
|
| 174 | + return; |
|
| 175 | + } |
|
| 176 | + |
|
| 177 | + $id_field = $this->db_fields['id']; |
|
| 178 | + |
|
| 179 | + if ( is_object( $args[0] ) ) { |
|
| 180 | + $args[0]->has_children = ! empty( $children_elements[ $element->$id_field ] ); |
|
| 181 | + } |
|
| 182 | + |
|
| 183 | + parent::display_element( $element, $children_elements, $max_depth, $depth, $args, $output ); |
|
| 184 | + } |
|
| 185 | + |
|
| 186 | + /** |
|
| 187 | + * Menu Fallback |
|
| 188 | + * ============= |
|
| 189 | + * If this function is assigned to the wp_nav_menu's fallback_cb variable |
|
| 190 | + * and a manu has not been assigned to the theme location in the WordPress |
|
| 191 | + * menu manager the function with display nothing to a non-logged in user, |
|
| 192 | + * and will add a link to the WordPress menu manager if logged in as an admin. |
|
| 193 | + * |
|
| 194 | + * @param array $args passed from the wp_nav_menu function. |
|
| 195 | + * |
|
| 196 | + */ |
|
| 197 | + public static function fallback( $args ) { |
|
| 198 | + if ( current_user_can( 'manage_options' ) ) { |
|
| 199 | + $fb_output = null; |
|
| 200 | + |
|
| 201 | + if ( $args['container'] ) { |
|
| 202 | + $fb_output = '<' . $args['container']; |
|
| 203 | + |
|
| 204 | + if ( $args['container_id'] ) { |
|
| 205 | + $fb_output .= ' id="' . $args['container_id'] . '"'; |
|
| 206 | + } |
|
| 207 | + |
|
| 208 | + if ( $args['container_class'] ) { |
|
| 209 | + $fb_output .= ' class="' . $args['container_class'] . '"'; |
|
| 210 | + } |
|
| 211 | + |
|
| 212 | + $fb_output .= '>'; |
|
| 213 | + } |
|
| 214 | + |
|
| 215 | + $fb_output .= '<ul'; |
|
| 216 | + |
|
| 217 | + if ( $args['menu_id'] ) { |
|
| 218 | + $fb_output .= ' id="' . $args['menu_id'] . '"'; |
|
| 219 | + } |
|
| 220 | + |
|
| 221 | + if ( $args['menu_class'] ) { |
|
| 222 | + $fb_output .= ' class="' . $args['menu_class'] . '"'; |
|
| 223 | + } |
|
| 224 | + |
|
| 225 | + $fb_output .= '>'; |
|
| 226 | + $fb_output .= '<li><a href="' . esc_url( admin_url( 'nav-menus.php' ) ) . '">' . esc_html__( 'Add a menu', 'lsx' ) . '</a></li>'; |
|
| 227 | + $fb_output .= '</ul>'; |
|
| 228 | + |
|
| 229 | + if ( $args['container'] ) { |
|
| 230 | + $fb_output .= '</' . $args['container'] . '>'; |
|
| 231 | + } |
|
| 232 | + |
|
| 233 | + echo wp_kses_post( $fb_output ); |
|
| 234 | + } |
|
| 235 | + } |
|
| 236 | + |
|
| 237 | + } |
|
| 238 | 238 | |
| 239 | 239 | endif; |
@@ -20,17 +20,17 @@ discard block |
||
| 20 | 20 | <?php if ( have_posts() ) : ?> |
| 21 | 21 | |
| 22 | 22 | <?php |
| 23 | - while ( have_posts() ) : |
|
| 24 | - the_post(); |
|
| 25 | - ?> |
|
| 23 | + while ( have_posts() ) : |
|
| 24 | + the_post(); |
|
| 25 | + ?> |
|
| 26 | 26 | |
| 27 | 27 | <?php |
| 28 | - if ( is_singular( 'post' ) ) { |
|
| 29 | - get_template_part( 'partials/content', 'post' ); |
|
| 30 | - } else { |
|
| 31 | - get_template_part( 'partials/content', 'custom' ); |
|
| 32 | - } |
|
| 33 | - ?> |
|
| 28 | + if ( is_singular( 'post' ) ) { |
|
| 29 | + get_template_part( 'partials/content', 'post' ); |
|
| 30 | + } else { |
|
| 31 | + get_template_part( 'partials/content', 'custom' ); |
|
| 32 | + } |
|
| 33 | + ?> |
|
| 34 | 34 | |
| 35 | 35 | <?php endwhile; ?> |
| 36 | 36 | |
@@ -43,16 +43,16 @@ discard block |
||
| 43 | 43 | <?php lsx_content_after(); ?> |
| 44 | 44 | |
| 45 | 45 | <?php |
| 46 | - if ( is_singular( 'post' ) ) { |
|
| 47 | - lsx_post_nav(); |
|
| 48 | - } |
|
| 49 | - ?> |
|
| 46 | + if ( is_singular( 'post' ) ) { |
|
| 47 | + lsx_post_nav(); |
|
| 48 | + } |
|
| 49 | + ?> |
|
| 50 | 50 | |
| 51 | 51 | <?php |
| 52 | - if ( comments_open() ) { |
|
| 53 | - comments_template(); |
|
| 54 | - } |
|
| 55 | - ?> |
|
| 52 | + if ( comments_open() ) { |
|
| 53 | + comments_template(); |
|
| 54 | + } |
|
| 55 | + ?> |
|
| 56 | 56 | |
| 57 | 57 | </div><!-- #primary --> |
| 58 | 58 | |