pagination not working
-
http://www.takeaclick.com/reviews/ereaders/
There are more products on the page then in displaying. But pagination is not working so no way to see them. What to do?
Shortcode I am using – [product_attribute attribute=’what’ filter=’ereader’ per_page=’12’ columns=’3′]
There are around 17 products though.
-
Hi neol56, I have the same problem, any idea how to solve it?
More info:
My principal page (only shows 12 items/page): http://goo.gl/LolvnD
My category “frases” (about 42 items in the category only shows 12 items): http://goo.gl/4E8l1f <- no paginationThanks..
Still not found a solution. If any of us do find a solution, pls post it here 🙂
Well there is a workaround.
Yes, I know it’s a bit ugly but it has a great advantage – it works, at least for me.
1) navigate to /wp-content/plugins/woocommerce/classes/ and make backup of class-wc-shortcodes.php
2) edit class-wc-shortcodes.php go to function product_attribute( $atts ) {
in my case it is line #966
to the following code$args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1,add the following line
'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1,so the whole array initialization looks like the following
$args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1, 'posts_per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ), 'tax_query' => array( array( 'taxonomy' => $attribute, 'terms' => $filter, 'field' => 'slug' ) ) );3) change the line #1020
<?php woocommerce_product_loop_end(); ?>
to the following<?php woocommerce_product_loop_end(); global $wp_query; $wp_query->max_num_pages = $products->max_num_pages; woocommerce_pagination(); ?>Again, yes I know that solution can be more elegant, I just don’t need it.
It worked for me. Thank you so much.
I have the same problem with @alfabetasdgadga, my home page didn’t show pagination although i already post more then 12 products. Here is the screenshot of my page : http://gyazo.com/00dbc135219b7054a8d34c48596ddd67
I already try what kolinus suggest but i still can’t make it works.
any other way to fix this?
here is my class-wc-shortcodes.php code
<?php /** * WC_Shortcodes class. * * @class WC_Shortcodes * @version 2.1.0 * @package WooCommerce/Classes * @category Class * @author WooThemes */ class WC_Shortcodes { /** * Init shortcodes */ public static function init() { // Define shortcodes $shortcodes = array( 'product' => __CLASS__ . '::product', 'product_page' => __CLASS__ . '::product_page', 'product_category' => __CLASS__ . '::product_category', 'product_categories' => __CLASS__ . '::product_categories', 'add_to_cart' => __CLASS__ . '::product_add_to_cart', 'add_to_cart_url' => __CLASS__ . '::product_add_to_cart_url', 'products' => __CLASS__ . '::products', 'recent_products' => __CLASS__ . '::recent_products', 'sale_products' => __CLASS__ . '::sale_products', 'best_selling_products' => __CLASS__ . '::best_selling_products', 'top_rated_products' => __CLASS__ . '::top_rated_products', 'featured_products' => __CLASS__ . '::featured_products', 'product_attribute' => __CLASS__ . '::product_attribute', 'related_products' => __CLASS__ . '::related_products', 'shop_messages' => __CLASS__ . '::shop_messages', 'woocommerce_order_tracking' => __CLASS__ . '::order_tracking', 'woocommerce_cart' => __CLASS__ . '::cart', 'woocommerce_checkout' => __CLASS__ . '::checkout', 'woocommerce_my_account' => __CLASS__ . '::my_account', ); foreach ( $shortcodes as $shortcode => $function ) { add_shortcode( apply_filters( "{$shortcode}_shortcode_tag", $shortcode ), $function ); } // Alias for pre 2.1 compatibility add_shortcode( 'woocommerce_messages', __CLASS__ . '::shop_messages' ); } /** * Shortcode Wrapper * * @param mixed $function * @param array $atts (default: array()) * @return string */ public static function shortcode_wrapper( $function, $atts = array(), $wrapper = array( 'class' => 'woocommerce', 'before' => null, 'after' => null ) ) { ob_start(); $before = empty( $wrapper['before'] ) ? '<div class="' . esc_attr( $wrapper['class'] ) . '">' : $wrapper['before']; $after = empty( $wrapper['after'] ) ? '</div>' : $wrapper['after']; echo $before; call_user_func( $function, $atts ); echo $after; return ob_get_clean(); } /** * Cart page shortcode. * * @access public * @param mixed $atts * @return string */ public static function cart( $atts ) { return self::shortcode_wrapper( array( 'WC_Shortcode_Cart', 'output' ), $atts ); } /** * Checkout page shortcode. * * @access public * @param mixed $atts * @return string */ public static function checkout( $atts ) { return self::shortcode_wrapper( array( 'WC_Shortcode_Checkout', 'output' ), $atts ); } /** * Order tracking page shortcode. * * @access public * @param mixed $atts * @return string */ public static function order_tracking( $atts ) { return self::shortcode_wrapper( array( 'WC_Shortcode_Order_Tracking', 'output' ), $atts ); } /** * Cart shortcode. * * @access public * @param mixed $atts * @return string */ public static function my_account( $atts ) { return self::shortcode_wrapper( array( 'WC_Shortcode_My_Account', 'output' ), $atts ); } /** * List products in a category shortcode * * @access public * @param array $atts * @return string */ public static function product_category( $atts ) { global $woocommerce_loop; if ( empty( $atts ) ) return ''; extract( shortcode_atts( array( 'per_page' => '12', 'columns' => '4', 'orderby' => 'title', 'order' => 'desc', 'category' => '', 'operator' => 'IN' // Possible values are 'IN', 'NOT IN', 'AND'. ), $atts ) ); if ( ! $category ) return ''; // Default ordering args $ordering_args = WC()->query->get_catalog_ordering_args( $orderby, $order ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'orderby' => $ordering_args['orderby'], 'order' => $ordering_args['order'], 'posts_per_page' => $per_page, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ), 'tax_query' => array( array( 'taxonomy' => 'product_cat', 'terms' => array( esc_attr( $category ) ), 'field' => 'slug', 'operator' => $operator ) ) ); if ( isset( $ordering_args['meta_key'] ) ) { $args['meta_key'] = $ordering_args['meta_key']; } ob_start(); $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); ?> <?php endif; woocommerce_reset_loop(); wp_reset_postdata(); return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>'; } /** * List all (or limited) product categories * * @access public * @param array $atts * @return string */ public static function product_categories( $atts ) { global $woocommerce_loop; extract( shortcode_atts( array( 'number' => null, 'orderby' => 'name', 'order' => 'ASC', 'columns' => '4', 'hide_empty' => 1, 'parent' => '' ), $atts ) ); if ( isset( $atts[ 'ids' ] ) ) { $ids = explode( ',', $atts[ 'ids' ] ); $ids = array_map( 'trim', $ids ); } else { $ids = array(); } $hide_empty = ( $hide_empty == true || $hide_empty == 1 ) ? 1 : 0; // get terms and workaround WP bug with parents/pad counts $args = array( 'orderby' => $orderby, 'order' => $order, 'hide_empty' => $hide_empty, 'include' => $ids, 'pad_counts' => true, 'child_of' => $parent ); $product_categories = get_terms( 'product_cat', $args ); if ( $parent !== "" ) { $product_categories = wp_list_filter( $product_categories, array( 'parent' => $parent ) ); } if ( $hide_empty ) { foreach ( $product_categories as $key => $category ) { if ( $category->count == 0 ) { unset( $product_categories[ $key ] ); } } } if ( $number ) { $product_categories = array_slice( $product_categories, 0, $number ); } $woocommerce_loop['columns'] = $columns; ob_start(); // Reset loop/columns globals when starting a new loop $woocommerce_loop['loop'] = $woocommerce_loop['column'] = ''; if ( $product_categories ) { woocommerce_product_loop_start(); foreach ( $product_categories as $category ) { wc_get_template( 'content-product_cat.php', array( 'category' => $category ) ); } woocommerce_product_loop_end(); } woocommerce_reset_loop(); return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>'; } /** * Recent Products shortcode * * @access public * @param array $atts * @return string */ public static function recent_products( $atts ) { global $woocommerce_loop; extract( shortcode_atts( array( 'per_page' => '12', 'columns' => '4', 'orderby' => 'date', 'order' => 'desc' ), $atts ) ); $meta_query = WC()->query->get_meta_query(); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'meta_query' => $meta_query ); ob_start(); $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); ?> <?php endif; wp_reset_postdata(); return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>'; } /** * List multiple products shortcode * * @access public * @param array $atts * @return string */ public static function products( $atts ) { global $woocommerce_loop; if ( empty( $atts ) ) return ''; extract( shortcode_atts( array( 'columns' => '4', 'orderby' => 'title', 'order' => 'asc' ), $atts ) ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'orderby' => $orderby, 'order' => $order, 'posts_per_page' => -1, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ) ); if ( isset( $atts['skus'] ) ) { $skus = explode( ',', $atts['skus'] ); $skus = array_map( 'trim', $skus ); $args['meta_query'][] = array( 'key' => '_sku', 'value' => $skus, 'compare' => 'IN' ); } if ( isset( $atts['ids'] ) ) { $ids = explode( ',', $atts['ids'] ); $ids = array_map( 'trim', $ids ); $args['post__in'] = $ids; } ob_start(); $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); ?> <?php endif; wp_reset_postdata(); return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>'; } /** * Display a single product * * @access public * @param array $atts * @return string */ public static function product( $atts ) { if ( empty( $atts ) ) return ''; $args = array( 'post_type' => 'product', 'posts_per_page' => 1, 'no_found_rows' => 1, 'post_status' => 'publish', 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ) ); if ( isset( $atts['sku'] ) ) { $args['meta_query'][] = array( 'key' => '_sku', 'value' => $atts['sku'], 'compare' => '=' ); } if ( isset( $atts['id'] ) ) { $args['p'] = $atts['id']; } ob_start(); $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) ); if ( $products->have_posts() ) : ?> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); ?> <?php endif; wp_reset_postdata(); return '<div class="woocommerce">' . ob_get_clean() . '</div>'; } /** * Display a single product price + cart button * * @access public * @param array $atts * @return string */ public static function product_add_to_cart( $atts ) { global $wpdb, $post; if ( empty( $atts ) ) return ''; extract( shortcode_atts( array( 'id' => '', 'sku' => '', 'style' => 'border:4px solid #ccc; padding: 12px;', 'show_price' => 'true' ), $atts ) ); if ( ! empty( $id ) ) { $product_data = get_post( $id ); } elseif ( ! empty( $sku ) ) { $product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $sku ) ); $product_data = get_post( $product_id ); } else { return ''; } $product = wc_setup_product_data( $product_data ); if ( ! $product ) { return ''; } ob_start(); ?> <p class="product woocommerce" style="<?php echo $style; ?>"> <?php if ( $show_price == 'true' ) : ?> <?php echo $product->get_price_html(); ?> <?php endif; ?> <?php woocommerce_template_loop_add_to_cart(); ?> </p><?php // Restore Product global in case this is shown inside a product post wc_setup_product_data( $post ); return ob_get_clean(); } /** * Get the add to cart URL for a product * * @access public * @param array $atts * @return string */ public static function product_add_to_cart_url( $atts ) { global $wpdb; if ( empty( $atts ) ) return ''; if ( isset( $atts['id'] ) ) { $product_data = get_post( $atts['id'] ); } elseif ( isset( $atts['sku'] ) ) { $product_id = $wpdb->get_var( $wpdb->prepare( "SELECT post_id FROM $wpdb->postmeta WHERE meta_key='_sku' AND meta_value='%s' LIMIT 1", $atts['sku'] ) ); $product_data = get_post( $product_id ); } else { return ''; } if ( 'product' !== $product_data->post_type ) { return ''; } $_product = get_product( $product_data ); return esc_url( $_product->add_to_cart_url() ); } /** * List all products on sale * * @access public * @param array $atts * @return string */ public static function sale_products( $atts ) { global $woocommerce_loop; extract( shortcode_atts( array( 'per_page' => '12', 'columns' => '4', 'orderby' => 'title', 'order' => 'asc' ), $atts ) ); // Get products on sale $product_ids_on_sale = wc_get_product_ids_on_sale(); $meta_query = array(); $meta_query[] = WC()->query->visibility_meta_query(); $meta_query[] = WC()->query->stock_status_meta_query(); $meta_query = array_filter( $meta_query ); $args = array( 'posts_per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'no_found_rows' => 1, 'post_status' => 'publish', 'post_type' => 'product', 'meta_query' => $meta_query, 'post__in' => array_merge( array( 0 ), $product_ids_on_sale ) ); ob_start(); $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); ?> <?php endif; wp_reset_postdata(); return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>'; } /** * List best selling products on sale * * @access public * @param array $atts * @return string */ public static function best_selling_products( $atts ) { global $woocommerce_loop; extract( shortcode_atts( array( 'per_page' => '12', 'columns' => '4' ), $atts ) ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $per_page, 'meta_key' => 'total_sales', 'orderby' => 'meta_value_num', 'meta_query' => array( array( 'key' => '_visibility', 'value' => array( 'catalog', 'visible' ), 'compare' => 'IN' ) ) ); ob_start(); $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); ?> <?php endif; wp_reset_postdata(); return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>'; } /** * List top rated products on sale * * @access public * @param array $atts * @return string */ public static function top_rated_products( $atts ) { global $woocommerce_loop; extract( shortcode_atts( array( 'per_page' => '12', 'columns' => '4', 'orderby' => 'title', 'order' => 'asc' ), $atts ) ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'orderby' => $orderby, 'order' => $order, 'posts_per_page' => $per_page, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ) ); ob_start(); add_filter( 'posts_clauses', array( __CLASS__, 'order_by_rating_post_clauses' ) ); $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) ); remove_filter( 'posts_clauses', array( __CLASS__, 'order_by_rating_post_clauses' ) ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); ?> <?php endif; wp_reset_postdata(); return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>'; } /** * Output featured products * * @access public * @param array $atts * @return string */ public static function featured_products( $atts ) { global $woocommerce_loop; extract( shortcode_atts( array( 'per_page' => '12', 'columns' => '4', 'orderby' => 'date', 'order' => 'desc' ), $atts ) ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'posts_per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ), array( 'key' => '_featured', 'value' => 'yes' ) ) ); ob_start(); $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); ?> <?php endif; wp_reset_postdata(); return '<div class="woocommerce columns-' . $columns . '">' . ob_get_clean() . '</div>'; } /** * Show a single product page * * @access public * @param array $atts * @return string */ public static function product_page( $atts ) { if ( empty( $atts ) ) return ''; if ( ! isset( $atts['id'] ) && ! isset( $atts['sku'] ) ) return ''; $args = array( 'posts_per_page' => 1, 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'no_found_rows' => 1 ); if ( isset( $atts['sku'] ) ) { $args['meta_query'][] = array( 'key' => '_sku', 'value' => $atts['sku'], 'compare' => '=' ); } if ( isset( $atts['id'] ) ) { $args['p'] = $atts['id']; } $single_product = new WP_Query( $args ); ob_start(); while ( $single_product->have_posts() ) : $single_product->the_post(); wp_enqueue_script( 'wc-single-product' ); ?> <div class="single-product"> <?php wc_get_template_part( 'content', 'single-product' ); ?> </div> <?php endwhile; // end of the loop. wp_reset_postdata(); return '<div class="woocommerce">' . ob_get_clean() . '</div>'; } /** * Show messages * * @access public * @return string */ public static function shop_messages() { ob_start(); wc_print_notices(); return '<div class="woocommerce">' . ob_get_clean() . '</div>'; } /** * woocommerce_order_by_rating_post_clauses function. * * @access public * @param array $args * @return array */ public static function order_by_rating_post_clauses( $args ) { global $wpdb; $args['where'] .= " AND $wpdb->commentmeta.meta_key = 'rating' "; $args['join'] .= " LEFT JOIN $wpdb->comments ON($wpdb->posts.ID = $wpdb->comments.comment_post_ID) LEFT JOIN $wpdb->commentmeta ON($wpdb->comments.comment_ID = $wpdb->commentmeta.comment_id) "; $args['orderby'] = "$wpdb->commentmeta.meta_value DESC"; $args['groupby'] = "$wpdb->posts.ID"; return $args; } /** * List products with an attribute shortcode * Example [product_attribute attribute='color' filter='black'] * * @access public * @param array $atts * @return string */ public static function product_attribute( $atts ) { global $woocommerce_loop; extract( shortcode_atts( array( 'per_page' => '12', 'columns' => '4', 'orderby' => 'title', 'order' => 'asc', 'attribute' => '', 'filter' => '' ), $atts ) ); $attribute = strstr( $attribute, 'pa_' ) ? sanitize_title( $attribute ) : 'pa_' . sanitize_title( $attribute ); $args = array( 'post_type' => 'product', 'post_status' => 'publish', 'ignore_sticky_posts' => 1, 'paged' => (get_query_var('paged')) ? get_query_var('paged') : 1, 'posts_per_page' => $per_page, 'orderby' => $orderby, 'order' => $order, 'meta_query' => array( array( 'key' => '_visibility', 'value' => array('catalog', 'visible'), 'compare' => 'IN' ) ), 'tax_query' => array( array( 'taxonomy' => $attribute, 'terms' => $filter, 'field' => 'slug' ) ) ); ob_start(); $products = new WP_Query( apply_filters( 'woocommerce_shortcode_products_query', $args, $atts ) ); $woocommerce_loop['columns'] = $columns; if ( $products->have_posts() ) : ?> <?php woocommerce_product_loop_start(); ?> <?php while ( $products->have_posts() ) : $products->the_post(); ?> <?php wc_get_template_part( 'content', 'product' ); ?> <?php endwhile; // end of the loop. ?> <?php woocommerce_product_loop_end(); global $wp_query; $wp_query->max_num_pages = $products->max_num_pages; woocommerce_pagination(); ?> <?php endif; wp_reset_postdata(); return '<div class="woocommerce">' . ob_get_clean() . '</div>'; } /** * @param array $atts * @return string */ public static function related_products( $atts ) { $atts = shortcode_atts( array( 'posts_per_page' => '2', 'columns' => '2', 'orderby' => 'rand', ), $atts ); if ( isset( $atts['per_page'] ) ) { _deprecated_argument( __CLASS__ . '->' . __FUNCTION__, '2.1', __( 'Use $args["posts_per_page"] instead. Deprecated argument will be removed in WC 2.2.', 'woocommerce' ) ); $atts['posts_per_page'] = $atts['per_page']; unset( $atts['per_page'] ); } ob_start(); woocommerce_related_products( $atts ); return ob_get_clean(); } }I made the changes kolinus suggested too but still no results. I even copied the shortcode from class-wc-shortcodes.php and created a custom shortcode in functions.php in my child-theme (with add_shortcode() and such) the output is still white space. Any help would be appreciated.
The topic ‘pagination not working’ is closed to new replies.