简体   繁体   English

Woocommerce简码分页

[英]Woocommerce shortcode pagination

I'm using Recent products shortcode, [recent_products per_page="4" columns="2"] and would like to have pagination, because I'm displaying products on homepage - and currently only 4 products are being displayed. 我正在使用“近期产品”简码, [recent_products per_page="4" columns="2"] ,并且想进行分页,因为我在首页上显示产品-目前仅显示4个产品。 Is there a way to add pagination? 有没有增加分页的方法?

I have imported dummy data, so there are 45 products. 我已经导入了虚拟数据,因此有45种产品。

You could consider a plugin: WP-PageNavi . 您可以考虑使用一个插件: WP-PageNavi In order to use it with Woocommerce, simply install and configure the plugin, then add the following code to your theme's functions.php : 为了与Woocommerce一起使用,只需安装和配置插件,然后将以下代码添加到主题的functions.php

remove_action('woocommerce_pagination', 'woocommerce_pagination', 10);
function woocommerce_pagination() {
    wp_pagenavi();      
}
add_action( 'woocommerce_pagination', 'woocommerce_pagination', 10);

Source: Mark van der Putten's blog , comments ommitted. 资料来源: Mark van der Putten的博客 ,省略了评论。

Also, you could ask this question on the dedicated StackExchange Wordpress site . 另外,您可以在专用的StackExchange Wordpress网站上询问此问题。

Use [recent_products limit="12" columns="4" paginate="true"] This shortcode limit 12 means maximum 12 post on a page. 使用[recent_products limit="12" columns="4" paginate="true"]此短码限制12表示页面上最多12个帖子。 more info woocommerce doc 更多信息woocommerce文档

Referencing from this github gist https://gist.github.com/klihelp/7810337 Including the following code into your child-theme functions.php after installing this plugin: https://wordpress.org/plugins/prime-strategy-page-navi/ 安装此插件后,请从此github gist引用https://gist.github.com/klihelp/7810337将以下代码包含在您的子主题function.php中: https : //wordpress.org/plugins/prime-strategy-page -navi /

<?php
/**
 * This code shows pagination for WooCommerce shortcodes when it's embeded on single pages.
 * Include into functions.php.
 */
if ( ! is_admin() ) {
// ---------------------- FRONTPAGE -------------------
if ( defined('WC_VERSION') ) {
// ---------------------- WooCommerce active -------------------

    /**
     * Set Pagination for shortcodes custom loop on single-pages.
     * @uses $woocommerce_loop;
     */
    add_action( 'pre_get_posts', 'kli_wc_pre_get_posts_query' ); 
    function kli_wc_pre_get_posts_query( $query ) {
        global $woocommerce_loop;

        // Get paged from main query only
        // ! frontpage missing the post_type
        if ( is_main_query() && ( $query->query['post_type'] == 'product' ) || ! isset( $query->query['post_type'] ) ){

          if ( isset($query->query['paged']) ){
            $woocommerce_loop['paged'] = $query->query['paged'];
          }
        }

        if ( ! $query->is_post_type_archive || $query->query['post_type'] !== 'product' ){
            return;
        }

        $query->is_paged = true;
        $query->query['paged'] = $woocommerce_loop['paged'];
        $query->query_vars['paged'] = $woocommerce_loop['paged'];
    }

    /** Prepare Pagination data for shortcodes on pages
     * @uses $woocommerce_loop;
     */
    add_action( 'loop_end', 'kli_query_loop_end' ); 
    function kli_query_loop_end( $query ) {

        if ( ! $query->is_post_type_archive || $query->query['post_type'] !== 'product' ){
            return;
        }

        // Cache data for pagination
        global $woocommerce_loop;
        $woocommerce_loop['pagination']['paged'] = $woocommerce_loop['paged'];
        $woocommerce_loop['pagination']['found_posts'] = $query->found_posts;
        $woocommerce_loop['pagination']['max_num_pages'] = $query->max_num_pages;
        $woocommerce_loop['pagination']['post_count'] = $query->post_count;
        $woocommerce_loop['pagination']['current_post'] = $query->current_post;
    }
    /**
     * Pagination for shortcodes on single-pages 
     * @uses $woocommerce_loop;
     */
    add_action( 'woocommerce_after_template_part', 'kli_wc_shortcode_pagination' ); 
    function kli_wc_shortcode_pagination( $template_name ) {
        if ( ! ( $template_name === 'loop/loop-end.php' && is_page() ) ){
            return;
        }
        global $wp_query, $woocommerce_loop;
        if ( ! isset( $woocommerce_loop['pagination'] ) ){
            return;
        }
        $wp_query->query_vars['paged'] = $woocommerce_loop['pagination']['paged'];
        $wp_query->query['paged'] = $woocommerce_loop['pagination']['paged'];
        $wp_query->max_num_pages = $woocommerce_loop['pagination']['max_num_pages'];
        $wp_query->found_posts = $woocommerce_loop['pagination']['found_posts'];
        $wp_query->post_count = $woocommerce_loop['pagination']['post_count'];
        $wp_query->current_post = $woocommerce_loop['pagination']['current_post'];

        // Custom pagination function or default woocommerce_pagination()
        kli_woocommerce_pagination();
    }   
    /**
     * Custom pagination for WooCommerce instead the default woocommerce_pagination()
     * @uses plugin Prime Strategy Page Navi, but added is_singular() on #line16
     */
    remove_action('woocommerce_after_shop_loop', 'woocommerce_pagination', 10);
    add_action( 'woocommerce_after_shop_loop', 'kli_woocommerce_pagination', 10);
    function kli_woocommerce_pagination() {
        wp_pagenavi(); 
    }
}// END WOOCOMMERCE
}// END FRONTPAGE

Use [recent_products limit="12" columns="4" paginate="true"] . 使用[recent_products limit="12" columns="4" paginate="true"] This shortcode limit 12 means maximum 12 post on a page. 此短代码限制12表示每页最多12个帖子。 more info woocommerce doc 更多信息woocommerce文档

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM