'grid', 'blog_archive_has_sidebar' => false, 'blog_archive_grid_columns' => 3, 'single_blog_has_sidebar' => false, 'single_blog_has_relative_blogs' => false, ); } public static function get_settings() { $default_settings = self::get_default_settings(); $settings = get_theme_mod( self::get_option_key(), $default_settings ); $settings = Helpers::recursive_wp_parse_args( $settings, $default_settings ); foreach ( array_keys( $settings ) as $key ) { if ( ! key_exists( $key, $default_settings ) ) { unset( $settings[ $key ] ); } } return $settings; } public static function save_settings( $data ) { $default_settings = self::get_default_settings(); $settings = Helpers::recursive_wp_parse_args( $data, $default_settings ); foreach ( array_keys( $settings ) as $key ) { if ( ! key_exists( $key, $default_settings ) ) { unset( $settings[ $key ] ); } } set_theme_mod( self::get_option_key(), $settings ); } public static function get_blog_archive_layout() { return self::get_property( 'blog_archive_layout' ); } public static function get_blog_archive_has_sidebar() { return self::get_property( 'blog_archive_has_sidebar' ); } public static function get_blog_archive_grid_columns() { return self::get_property( 'blog_archive_grid_columns' ); } public static function get_single_blog_has_sidebar() { return self::get_property( 'single_blog_has_sidebar' ); } public static function get_single_blog_has_relative_blogs() { return self::get_property( 'single_blog_has_relative_blogs' ); } public static function get_property( $name ) { $settings = self::get_settings(); $default_settings = self::get_default_settings(); return isset( $settings[ $name ] ) ? $settings[ $name ] : ( isset( $default_settings[ $name ] ) ? $default_settings[ $name ] : null ); } public static function get_relative_posts( $post_id, $related = 'categories', $order_by = 'title', $order_type = 'asc' ) { $term_ids = array(); $terms = ( 'tags' === $related ) ? get_the_tags( $post_id ) : get_the_category( $post_id ); if ( ! empty( $terms ) && ! is_wp_error( $terms ) ) { $term_ids = wp_list_pluck( $terms, 'term_id' ); } $query_args = array( 'update_post_meta_cache' => false, 'posts_per_page' => 4, 'no_found_rows' => true, 'post_status' => 'publish', 'post_type' => 'post', 'orderby' => $order_by, 'fields' => 'ids', 'order' => $order_type, ); $taxonomy_key = ( 'tags' === $related ) ? 'tag__in' : 'category__in'; $query_args[ $taxonomy_key ] = $term_ids; $query_args['post__not_in'] = array( $post_id ); $query_posts = new \WP_Query( $query_args ); return $query_posts->get_posts(); } }