【问题标题】:Woocommerce shortcode paginationWoocommerce简码分页
【发布时间】:2012-10-23 00:15:09
【问题描述】:

我正在使用最近的产品简码,[recent_products per_page="4" columns="2"] 并且想要分页,因为我在主页上显示产品 - 目前只显示 4 个产品。有没有办法加分页?

我已经导入了虚拟数据,所以有 45 个产品。

【问题讨论】:

    标签: wordpress woocommerce


    【解决方案1】:

    使用[recent_products limit="12" columns="4" paginate="true"] 这个短代码限制为 12 意味着一个页面上最多 12 个帖子。 更多信息woocommerce doc

    【讨论】:

    • 这对我不起作用。页面显示 12 个产品但没有分页
    • @SahanPasinduNirmal 你有超过 12 个产品吗?
    • 确实如此。!我正在使用电子 woocommerce 主题,希望主题不会影响这个问题。
    • 它在我的网站上运行良好,我只是对其进行测试。也许你的主题有问题。看看我只是为你检查karughor.com/shortcode-test
    【解决方案2】:

    你可以考虑一个插件:WP-PageNavi。为了在 Woocommerce 中使用它,只需安装和配置插件,然后将以下代码添加到主题的 functions.php

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

    来源:Mark van der Putten's blog,cmets 省略。

    另外,您可以在专用的StackExchange Wordpress site 上提出这个问题。

    【讨论】:

      【解决方案3】:

      从这个 github gist 引用 https://gist.github.com/klihelp/7810337 在安装此插件后将以下代码包含到您的子主题 functions.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
      

      【讨论】:

        【解决方案4】:

        使用[recent_products limit="12" columns="4" paginate="true"]。此简码限制 12 意味着一个页面上最多 12 个帖子。更多信息 woocommerce 文档

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-01-01
          • 2014-09-20
          • 2023-03-05
          • 2016-06-17
          • 1970-01-01
          • 2019-06-17
          • 2017-12-29
          相关资源
          最近更新 更多