function hocwp_option_home_setting_defaults() { $alls = hocwp_option_defaults(); $defaults = hocwp_get_value_by_key($alls, 'home_setting'); if (!hocwp_array_has_value($defaults)) { $defaults = array('recent_posts' => 1, 'posts_per_page' => hocwp_get_posts_per_page(), 'pagination' => 1); } return apply_filters('hocwp_option_home_setting_defaults', $defaults); }
function hocwp_get_search_tracking($args = array()) { $defaults = array('orderby' => 'count', 'order' => 'desc', 'offset' => 0, 'posts_per_page' => hocwp_get_posts_per_page()); $args = wp_parse_args($args, $defaults); $orderby = $args['orderby']; $order = $args['order']; $offset = $args['offset']; $posts_per_page = $args['posts_per_page']; global $wpdb; $table_name = $wpdb->prefix . HOCWP_SEARCH_TRACKING_TABLE; $sql = "SELECT * FROM {$table_name}"; $sql .= " GROUP BY {$orderby} ORDER BY {$orderby} {$order} LIMIT {$posts_per_page} OFFSET {$offset}"; $result = $wpdb->get_results($sql); return $result; }
function hocwp_shortcode_post_callback($atts = array(), $content = null) { $defaults = array('order' => 'desc', 'orderby' => 'date', 'by' => 'related', 'post_type' => 'post', 'title' => __('Related posts', 'hocwp-theme'), 'offset' => 0, 'column' => 4, 'number' => hocwp_get_posts_per_page(), 'border_color' => '', 'exclude_current' => true, 'display' => 'left', 'excerpt_length' => 0, 'style' => '', 'post' => '', 'posts' => '', 'thumbnail_size' => '180,110', 'interval' => ''); $attributes = shortcode_atts($defaults, $atts); $transient_name = 'hocwp_shortcode_post_%s'; $transient_name = hocwp_build_transient_name($transient_name, $attributes); if (false === ($html = get_transient($transient_name))) { $order = $attributes['order']; $orderby = $attributes['orderby']; $by = $attributes['by']; $post_type = hocwp_string_to_array(',', $attributes['post_type']); $post_type = array_map('trim', $post_type); $offset = $attributes['offset']; $column = $attributes['column']; if (!hocwp_is_positive_number($column)) { $column = 1; } $number = $attributes['number']; $posts_per_page = hocwp_get_first_divisible_of_divisor($number, $column); $exclude_current = (bool) $attributes['exclude_current']; $display = $attributes['display']; $display = trim($display); $excerpt_length = $attributes['excerpt_length']; $post = $attributes['post']; $post = hocwp_find_post($post); $posts = $attributes['posts']; $posts = hocwp_string_to_array(',', $posts); $thumbnail_size = $attributes['thumbnail_size']; $thumbnail_size = hocwp_sanitize_size($thumbnail_size); $interval = $attributes['interval']; if (hocwp_is_post($post)) { $display = 'full'; } $class = 'hocwp-shortcode-post'; hocwp_add_string_with_space_before($class, $order); hocwp_add_string_with_space_before($class, $by); hocwp_add_string_with_space_before($class, hocwp_sanitize_html_class($display)); if ('100%' == $display) { $class = hocwp_add_more_class($class, 'full-width'); } hocwp_add_string_with_space_before($class, implode(' ', $post_type)); $query = null; if (!hocwp_is_post($post)) { $args = array('post_type' => $post_type, 'posts_per_page' => $posts_per_page, 'offset' => $offset, 'order' => $order, 'orderby' => $orderby); if (!empty($interval)) { hocwp_query_sanitize_date_query_args($interval, $args); } if ($exclude_current && is_singular()) { $post_id = get_the_ID(); $args['post__not_in'] = array($post_id); } if (hocwp_array_has_value($posts)) { $args['post__in'] = $posts; } $query = hocwp_query_by($by, $args); } else { if (!hocwp_is_positive_number($excerpt_length)) { $excerpt_length = 200; } } if (hocwp_is_post($post) || hocwp_object_valid($query) && $query->have_posts()) { $html = hocwp_shortcode_before($class, $attributes); $width = $thumbnail_size[0]; if (hocwp_is_post($post)) { global $post; setup_postdata($post); ob_start(); ?> <div class="one-post"> <div <?php post_class('', $post); ?> > <?php if ($width > 0) { hocwp_post_thumbnail(array('width' => $thumbnail_size[0], 'height' => $thumbnail_size[1], 'post_id' => $post->ID)); } hocwp_post_title_link(array('title' => $post->post_title, 'permalink' => get_permalink($post))); if (hocwp_is_positive_number($excerpt_length)) { hocwp_entry_summary($excerpt_length); } ?> </div> </div> <?php $html .= ob_get_clean(); wp_reset_postdata(); } else { $html .= '<div class="in-loop row-small">'; $loop = apply_filters('hocwp_shortcode_post_pre_loop', '', $query, $attributes); if (empty($loop)) { $count = 1; $style = ''; if ('left' != $display && 'right' != $display) { $style = 'width:' . hocwp_column_width_percentage($column); } while ($query->have_posts()) { $query->the_post(); $html_loop = apply_filters('hocwp_shortcode_post_loop', '', $attributes); if (empty($html_loop)) { $item_class = 'item'; if (hocwp_is_last_item($count, $column)) { hocwp_add_string_with_space_before($item_class, 'last-item'); } elseif (hocwp_is_first_item($count, $column)) { hocwp_add_string_with_space_before($item_class, 'first-item'); } ob_start(); ?> <div class="<?php echo $item_class; ?> " style="<?php echo $style; ?> "> <div <?php post_class(); ?> > <?php if ($width > 0) { hocwp_post_thumbnail(array('width' => $thumbnail_size[0], 'height' => $thumbnail_size[1])); } hocwp_post_title_link(); if (hocwp_is_positive_number($excerpt_length)) { hocwp_entry_summary($excerpt_length); } ?> </div> </div> <?php $html_loop = ob_get_clean(); } $loop .= $html_loop; $count++; } wp_reset_postdata(); } $html .= $loop; $html .= '</div>'; } $html .= hocwp_shortcode_after(); } else { $html = ''; } if (!empty($html)) { set_transient($transient_name, $html, WEEK_IN_SECONDS); } } return apply_filters('hocwp_shortcode_post', $html, $attributes, $content); }
function hocwp_get_product_posts_per_page() { $number = get_option('hocwp_product_posts_per_page'); if (!hocwp_is_positive_number($number)) { $reading = get_option('hocwp_reading'); $number = hocwp_get_value_by_key($reading, 'products_per_page', hocwp_get_posts_per_page()); } $number = apply_filters('hocwp_product_posts_per_page', $number); return $number; }
function hocwp_term_pagination($args = array()) { $query_vars = hocwp_get_value_by_key($args, 'query_vars', array()); $posts_per_page = hocwp_get_value_by_key($query_vars, 'number', hocwp_get_posts_per_page()); $offset = absint(hocwp_get_value_by_key($query_vars, 'offset')); $paged = hocwp_get_paged(); $taxonomy = hocwp_get_value_by_key($args, 'taxonomy', 'category'); if ($paged > 1) { $offset = ($paged - 1) * $posts_per_page; } $term_args = array('number' => 0, 'hide_empty' => false); $terms = hocwp_get_terms($taxonomy, $term_args); $total_page = 1; if (0 < $posts_per_page) { $total_page = ceil(count($terms) / $posts_per_page); } $args['current_page'] = $paged; $args['total_page'] = $total_page; $class = hocwp_get_value_by_key($args, 'class'); hocwp_add_string_with_space_before($class, 'term-pagination'); $args['class'] = $class; $result = hocwp_build_pagination($args); hocwp_pagination_before($args); echo $result; hocwp_pagination_after(); }
function hocwp_query_related_post($args = array()) { $post_id = absint(isset($args['post_id']) ? $args['post_id'] : get_the_ID()); if ($post_id < 1) { return new WP_Query(); } $current_post = get_post($post_id); if (!isset($args['post_type'])) { $args['post_type'] = $current_post->post_type; } $keep_current = (bool) hocwp_get_value_by_key($args, 'keep_current'); $posts_per_page = hocwp_get_value_by_key($args, 'posts_per_page', hocwp_get_posts_per_page()); $transient_name = 'hocwp_cache_post_' . $post_id . '_related_%s'; $transient_name = hocwp_build_transient_name($transient_name, $args); $cache = isset($args['cache']) ? $args['cache'] : true; $query = new WP_Query(); if (!$cache || $cache && false === ($query = get_transient($transient_name))) { $taxonomies = get_post_taxonomies($post_id); $defaults = array(); foreach ($taxonomies as $taxonomy) { $tax = get_taxonomy($taxonomy); if ((bool) $tax->hierarchical) { continue; } $term_ids = wp_get_post_terms($post_id, $taxonomies, array('fields' => 'ids')); if (hocwp_array_has_value($term_ids)) { $tax_item = array('taxonomy' => $taxonomy, 'field' => 'id', 'terms' => $term_ids); $defaults = hocwp_query_sanitize_tax_query($tax_item, $defaults); } } if (hocwp_array_has_value($defaults)) { if (!$keep_current) { $defaults['post__not_in'] = array($post_id); } $defaults['tax_query']['relation'] = 'OR'; $query_args = wp_parse_args($args, $defaults); $query = hocwp_query($query_args); } if (!is_a($query, 'WP_Query')) { $query = new WP_Query(); } if ($query->post_count < $posts_per_page) { $missing = $posts_per_page - $query->post_count; $defaults = array(); foreach ($taxonomies as $taxonomy) { $tax = get_taxonomy($taxonomy); if (!(bool) $tax->hierarchical) { continue; } $term_ids = wp_get_post_terms($post_id, $taxonomy, array('fields' => 'ids')); if (hocwp_array_has_value($term_ids)) { $tax_item = array('taxonomy' => $taxonomy, 'field' => 'id', 'terms' => $term_ids); $defaults = hocwp_query_sanitize_tax_query($tax_item, $defaults); } } if (!$keep_current) { $defaults['post__not_in'] = array($post_id); } $defaults['tax_query']['relation'] = 'OR'; $defaults['posts_per_page'] = $missing; unset($args['tax_query']); $args = wp_parse_args($args, $defaults); $cat_query = hocwp_query($args); $post_ids = array(); if (hocwp_array_has_value($query->posts)) { foreach ($query->posts as $post) { array_push($post_ids, $post->ID); } } if (hocwp_array_has_value($cat_query->posts)) { foreach ($cat_query->posts as $post) { array_push($post_ids, $post->ID); } } $args['posts_per_page'] = $posts_per_page; $args['post__in'] = $post_ids; $args['orderby'] = 'post__in'; $query = hocwp_query($args); } if (!$query->have_posts()) { unset($args['post__in']); unset($args['tax_query']); $args['orderby'] = 'date'; $args['s'] = $current_post->post_title; $query = hocwp_query($args); } $cache_days = apply_filters('hocwp_related_post_cache_days', 3); if (!$query->have_posts()) { $cache_days = 1; } if (($cache || hocwp_is_positive_number($cache)) && $query->have_posts()) { if (!hocwp_is_positive_number($cache)) { $cache = $cache_days * DAY_IN_SECONDS; } set_transient($transient_name, $query, $cache); } } return $query; }
function hocwp_wc_product_settings_page($settings) { $item = array('title' => __('Thumbnail on gallery', 'hocwp-theme'), 'desc' => __('Auto add current product thumbnail into it\'s gallery', 'hocwp-theme'), 'id' => 'hocwp_single_product_thumbnail_on_gallery', 'default' => 'no', 'type' => 'checkbox'); hocwp_wc_add_settings_field($settings, $item, 'image_options'); $item = array('title' => __('Thumbnail zooming', 'hocwp-theme'), 'desc' => __('Add function allow user can zoom current product image on single page', 'hocwp-theme'), 'id' => 'hocwp_single_product_thumbnail_zoom', 'default' => 'no', 'type' => 'checkbox'); hocwp_wc_add_settings_field($settings, $item, 'image_options'); $item = array('title' => __('Gallery on left', 'hocwp-theme'), 'desc' => __('Display gallery on the left of single product main image', 'hocwp-theme'), 'id' => 'hocwp_single_product_gallery_left', 'default' => 'no', 'type' => 'checkbox'); hocwp_wc_add_settings_field($settings, $item, 'image_options'); $item = array('title' => __('Gallery preview', 'hocwp-theme'), 'desc' => __('Auto show gallery image in current product thumbnail on mouse hover', 'hocwp-theme'), 'id' => 'hocwp_single_product_gallery_preview', 'default' => 'yes', 'type' => 'checkbox'); hocwp_wc_add_settings_field($settings, $item, 'image_options'); $item = array('title' => __('Additional Settings', 'hocwp-theme'), 'type' => 'title', 'desc' => __('You can change number products to show on archive page.', 'hocwp-theme'), 'id' => 'hocwp_additional_settings'); hocwp_wc_add_settings_field($settings, $item, ''); $item = array('title' => __('Posts per page', 'hocwp-theme'), 'id' => 'hocwp_product_posts_per_page', 'type' => 'number', 'custom_attributes' => array('min' => 1, 'step' => 1), 'css' => 'width: 80px;', 'default' => hocwp_get_posts_per_page(), 'autoload' => false); hocwp_wc_add_settings_field($settings, $item, 'hocwp_additional_settings'); $item = array('title' => __('Percentage sale flash', 'hocwp-theme'), 'desc' => __('Display product sale flash as percentage instead of text', 'hocwp-theme'), 'id' => 'hocwp_product_percentage_sale_flash', 'default' => 'no', 'type' => 'checkbox'); hocwp_wc_add_settings_field($settings, $item, 'hocwp_additional_settings'); $item = array('type' => 'sectionend', 'id' => 'hocwp_additional_settings'); hocwp_wc_add_settings_field($settings, $item, ''); return $settings; }