Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
解决WooCommerce自定义模板分页加载重复内容的问题_创想鸟

解决WooCommerce自定义模板分页加载重复内容的问题

解决woocommerce自定义模板分页加载重复内容的问题

本教程详细阐述了在WooCommerce自定义模板中,分页链接加载相同页面内容的问题及其解决方案。核心在于调整当前页码的获取方式,从get_query_var(‘paged’)改为使用filter_input读取自定义GET参数,并相应修改paginate_links函数的format参数,确保分页链接能正确指向不同页面的内容。

问题描述

在开发自定义WooCommerce模板(例如,用于显示用户下载或订单历史的downloads.php或类似文件)时,开发者可能会遇到一个常见的分页问题:当点击分页链接(如“第2页”)时,URL会正确地更新(例如,从mywebsite.com/account/downloads变为mywebsite.com/account/downloads/2),但页面显示的内容却始终是第一页的数据。这表明尽管URL结构发生了变化,但后端查询并未正确识别并处理页码参数。

最初尝试使用get_query_var(‘paged’)来获取当前页码,但这种方法在自定义wc_get_orders查询中可能无法按预期工作,因为它通常与WordPress主查询的重写规则更紧密相关。

理解WordPress与WooCommerce中的分页机制

WordPress默认的分页机制依赖于其重写规则来解析URL中的页码(例如/page/2/)。然而,当我们在自定义模板中使用wc_get_orders等函数构建独立于主查询的自定义查询时,WordPress的默认分页变量paged可能无法自动被正确识别和传递。为了确保自定义查询能够响应分页链接,我们需要明确地定义如何获取当前页码,以及如何构造分页链接的URL。

解决方案

解决此问题的关键在于两步:修改当前页码的获取方式和调整paginate_links函数的format参数,使其协同工作。

步骤一:调整当前页码变量的获取方式

不再使用get_query_var(‘paged’),而是通过filter_input函数安全地从URL的GET参数中读取自定义的页码变量。

原代码示例(可能存在问题):

$current_page = ( get_query_var('paged') ) ? get_query_var('paged') : 1;

修改为:

$paged = max( 1, (int) filter_input( INPUT_GET, 'pagina' ) );

解释:

filter_input( INPUT_GET, ‘pagina’ ):这是一个更安全、更推荐的方式来获取GET请求参数。INPUT_GET指定从GET请求中获取,’pagina’是我们自定义的URL参数名称。(int):将获取到的参数强制转换为整数类型,确保其为有效的页码。max( 1, … ):确保页码至少为1,避免出现负数或零页码的情况。这里我们将自定义的GET参数命名为pagina。您可以根据自己的偏好选择其他名称,但请确保在后续步骤中保持一致。

步骤二:配置paginate_links函数的format参数

为了让paginate_links函数生成包含我们自定义GET参数的正确分页URL,需要修改其format参数。

原代码示例(可能存在问题):

'format' => '%#%',

修改为:

'format' => '?pagina=%#%',

解释:

%#%是paginate_links函数中的一个占位符,它会被实际的页码替换。通过将format设置为’?pagina=%#%’,我们指示paginate_links生成形如?pagina=2、?pagina=3这样的URL参数,而不是依赖WordPress默认的路径式分页(如/page/2/)。这样,当用户点击分页链接时,URL中会包含?pagina=N,我们的自定义查询就能通过filter_input( INPUT_GET, ‘pagina’ )正确读取到页码。

此外,在paginate_links的base参数中,也需要确保指向正确的端点URL。例如,如果您的自定义页面是WooCommerce我的账户下的一个端点,可以使用wc_get_endpoint_url(‘your-endpoint-slug’)。在提供的解决方案中,’libreria’被用作端点。

'base' => esc_url( wc_get_endpoint_url( 'libreria') ) . '%_%',

完整示例代码

以下是整合了上述解决方案的自定义WooCommerce模板代码示例:

customer->get_downloadable_products();$has_downloads = (bool) $downloads;do_action( 'woocommerce_before_account_downloads', $has_downloads );if ( $has_downloads ) { ?>
Ordine Prodotto Data Totale Stato File
get_current_user_id(), 'post_status' => $order_statuses, 'paged' => $paged, // 使用新的 $paged 变量 'posts_per_page' => 3, // 每页显示订单数,可根据需要调整 'paginate' => true, )); $customer_orders = wc_get_orders( $args ); // Get Access $order variable Foreach - Definisci le variabili sotto per poi utilizzarle in echo foreach($customer_orders->orders as $order) { // Get $product object from $order / $order_id $orders_id = $order->get_id(); $status = wc_get_order_status_name( $order->get_status() ); $date_created = $order->get_date_created()->date('d/m/Y'); $payment_method = $order->get_payment_method_title(); $order_total = $order->get_formatted_order_total(); // Get Access Items & Product Variable Foreach foreach($order->get_items() as $item_id => $item) { $product_name = $item->get_name(); $view_order = $order->get_view_order_url(); // Get product image - https://www.businessbloomer.com/woocommerce-easily-get-product-info-title-sku-desc-product-object/ $product = $item->get_product(); if( $product instanceof WC_Product ){ $order_img = $product->get_image(); } //Get product download button $downloads = $order->get_downloadable_items(); if(is_array($downloads)) { foreach($downloads as $product){ $download_button = 'Download'; } } echo '
Ordine #'. esc_attr($orders_id) .' Prodotto '. wp_kses_post($product_name) .' Data '. wp_kses_post($date_created) .' Prezzo '. wp_kses_post($order_total) .' Stato get_status() . '">'. wp_kses_post($status) .' File Visualizza
'; // Tasto download funzionante - if($downloads) { echo '
'. $download_button .'
'; } } } // Pagination button - Responsabile dei bottoni e numerazione delle pagine della cronologia ordini ?>
esc_url( wc_get_endpoint_url( 'libreria') ) . '%_%', // 确保这里的端点名称与您的设置一致 'format' => '?pagina=%#%', // 步骤二:修改 format 参数 'total' => $customer_orders->max_num_pages, 'current' => $paged, // 使用新的 $paged 变量 'show_all' => false, 'end_size' => 3, 'mid_size' => 3, 'prev_next' => true, 'prev_text' => __('Indietro'), 'next_text' => __('Avanti'), 'type' => 'plain', 'add_args' => false, 'add_fragment' => '' ); echo paginate_links($args); } else { ?>
La tua cronologia ordini è vuota!

注意事项

端点名称一致性: 在wc_get_endpoint_url()函数中使用的端点名称(例如’libreria’)必须与您在WooCommerce设置中或通过代码注册的自定义账户端点名称完全一致。pagina参数: filter_input( INPUT_GET, ‘pagina’ )中的’pagina’与format参数中的’?pagina=%#%’必须保持一致。如果您选择其他名称,请确保两处都进行修改。安全性: 使用filter_input是获取GET参数的推荐方式,因为它提供了数据过滤和验证的功能,有助于防止XSS等安全漏洞。调试: 如果遇到问题,可以启用WordPress的调试模式(在wp-config.php中设置define( ‘WP_DEBUG’, true );)来查看是否有PHP错误或警告,这有助于定位问题。缓存: 在进行此类更改后,请清除任何WordPress或服务器级别的缓存,以确保新的代码逻辑能够正确执行。

总结

在WooCommerce自定义模板中实现正确的分页,关键在于理解自定义查询与WordPress默认分页机制之间的差异。通过将当前页码的获取方式从get_query_var(‘paged’)切换到使用filter_input读取自定义GET参数,并相应地调整paginate_links函数的format参数,我们可以确保分页链接能够正确地更新URL并加载对应页面的内容,从而提供无缝的用户体验。这种方法提供了一种灵活且健壮的解决方案,适用于需要精细控制分页逻辑的自定义场景。

以上就是解决WooCommerce自定义模板分页加载重复内容的问题的详细内容,更多请关注php中文网其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1579544.html

赞 (0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HTML 标题元素与 aria-label 的正确使用:避免无障碍性陷阱
上一篇 2025年12月22日 20:42:51
HTML/CSS中构建可点击按钮:避免链接溢出与结构优化实践
下一篇 2025年12月22日 20:43:07

相关推荐

  • 小红书网页版怎么绑定邮箱_小红书网页版邮箱绑定与验证

    小红书网页版怎么绑定邮箱_小红书网页版邮箱绑定与验证小红书网页版怎么绑定邮箱_小红书网页版邮箱绑定与验证小红书网页版怎么绑定邮箱_小红书网页版邮箱绑定与验证小红书网页版怎么绑定邮箱_小红书网页版邮箱绑定与验证

    小红书网页版邮箱绑定入口在“设置”-“账号与安全”中,用户登录后点击头像进入设置,选择“绑定邮箱”并输入有效地址,查收验证邮件后点击链接完成验证,即可提升账号安全性、方便找回密码、增强识别度并接收官方活动信息。 小红书网页版邮箱绑定入口在哪? 小红书网页版邮箱绑定与验证方法是许多新用户关心的问题,尤…

    2026年9月25日 • 用户投稿
    300
  • 手机照片、视频误删?这些免费恢复软件帮你找回

    手机照片、视频误删?这些免费恢复软件帮你找回手机照片、视频误删?这些免费恢复软件帮你找回手机照片、视频误删?这些免费恢复软件帮你找回手机照片、视频误删?这些免费恢复软件帮你找回

    1、可通过牛学长、EaseUS、Recuva或手机App恢复已删照片视频;2、前三种需电脑连接手机扫描,第四种直接在手机操作;3、恢复成功率取决于数据是否被覆盖。 如果您在整理手机相册时不小心删除了重要的照片或视频,不必过于惊慌。现代数据恢复技术可以在数据被新内容覆盖前,将其从设备的存储空间中找回。…

    2026年9月25日 • 用户投稿
    100
  • Java向上转型中可变参数方法调用的行为解析:重载与编译时绑定的深层机制

    Java向上转型中可变参数方法调用的行为解析:重载与编译时绑定的深层机制Java向上转型中可变参数方法调用的行为解析:重载与编译时绑定的深层机制Java向上转型中可变参数方法调用的行为解析:重载与编译时绑定的深层机制Java向上转型中可变参数方法调用的行为解析:重载与编译时绑定的深层机制

    本文深入探讨Java中向上转型、方法重载与可变参数(varargs)的交互机制。通过具体代码示例,详细解释了在向上转型场景下,为何编译器会基于引用变量的编译时类型来解析方法调用,即使子类存在看似更匹配的重载方法。核心在于方法重载是编译时决策,而可变参数在重载解析中具有较低的优先级。理解这些机制对于编…

    2026年9月25日 • 用户投稿
    000
  • 如何设置Linux文件访问时间 禁止atime更新方法

    如何设置Linux文件访问时间 禁止atime更新方法如何设置Linux文件访问时间 禁止atime更新方法如何设置Linux文件访问时间 禁止atime更新方法如何设置Linux文件访问时间 禁止atime更新方法

    linux系统中可通过禁用atime提升性能。1. atime是文件访问时间,每次读取文件会更新,影响i/o性能;2. 推荐使用noatime挂载选项,在/etc/fstab中添加noatime并重挂载分区;3. 也可使用relatime保留部分atime信息;4. 特定文件可用chattr +a禁…

    2026年9月25日 • 用户投稿
    200
  • EchoMimicV3— 蚂蚁集团推出的多模态数字人视频生成框架

    EchoMimicV3— 蚂蚁集团推出的多模态数字人视频生成框架EchoMimicV3— 蚂蚁集团推出的多模态数字人视频生成框架EchoMimicV3— 蚂蚁集团推出的多模态数字人视频生成框架EchoMimicV3— 蚂蚁集团推出的多模态数字人视频生成框架

    ☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 免费无限量使用 DeepSeek R1 模型☜☜☜ 怪兽AI数字人 数字人短视频创作,数字人直播,实时驱动数字人 44 查看详情 EchoMimicV3是什么 echomimicv3是由蚂蚁集团研发的一款高效、多模态、多任务的数字人视频生成框架。…

    2026年9月25日 • 用户投稿
    000
  • 如何在Android应用中加入AI功能 Android集成ML Kit的完整教程

    如何在Android应用中加入AI功能 Android集成ML Kit的完整教程如何在Android应用中加入AI功能 Android集成ML Kit的完整教程如何在Android应用中加入AI功能 Android集成ML Kit的完整教程如何在Android应用中加入AI功能 Android集成ML Kit的完整教程

    创建firebase项目并接入android应用:注册应用到firebase控制台,下载配置文件并添加google服务插件。2. 引入ml kit依赖:根据所需功能在build.gradle中添加对应依赖。3. 使用ml kit进行图像处理:以文字识别为例,获取图片、转为inputimage对象、初…

    2026年9月25日 • 用户投稿
    800
  • Groovy编程:在HTTP请求头中传递授权令牌的实践指南

    Groovy编程:在HTTP请求头中传递授权令牌的实践指南Groovy编程:在HTTP请求头中传递授权令牌的实践指南Groovy编程:在HTTP请求头中传递授权令牌的实践指南Groovy编程:在HTTP请求头中传递授权令牌的实践指南

    本教程详细介绍了如何在Groovy中通过HTTP请求头发送授权令牌,以实现对RESTful API的安全访问。针对用户在Groovy中模拟curl -H ‘Authorization: token …’命令时遇到的常见问题,本文提供了基于java.net.URL和…

    2026年9月25日 • 用户投稿
    900
  • 奥特曼:我承认 GPT-5 发布搞砸了

    奥特曼:我承认 GPT-5 发布搞砸了奥特曼:我承认 GPT-5 发布搞砸了奥特曼:我承认 GPT-5 发布搞砸了奥特曼:我承认 GPT-5 发布搞砸了

    奥特曼终于承认他搞砸了。 要说最近 AI 圈的大型翻车现场,GPT-5 的发布绝对能排得上号。 为了推广 GPT-5,OpenAI 一声招呼都不打就直接把其他型号给一刀切了,然后在用户的一片吐槽声中又把 GPT-4o 给加了回来。 对此,奥特曼在最近的一次记者晚宴上也干脆利落地承认:没错,GPT-5…

    2026年9月25日 • 用户投稿
    000
  • 快速搭建一个管理App数据和用户的界面

    快速搭建一个管理App数据和用户的界面快速搭建一个管理App数据和用户的界面快速搭建一个管理App数据和用户的界面快速搭建一个管理App数据和用户的界面

    在电商、教育、企业服务等关键领域,app的数据管理效率与系统用户体验已成为决定产品市场竞争力的核心因素。本文将为开发者提供一套从需求分析到技术落地的完整路径,助你快速构建一个高效且易用的管理类app界面。 一、厘清需求:聚焦数据与用户场景的深度融合 构建管理型App的第一步是精准把握业务本质。必须深…

    2026年9月25日 • 用户投稿
    700
  • Spring Boot 应用:分离 REST API 和 Web 应用的最佳实践

    Spring Boot 应用:分离 REST API 和 Web 应用的最佳实践Spring Boot 应用:分离 REST API 和 Web 应用的最佳实践Spring Boot 应用:分离 REST API 和 Web 应用的最佳实践Spring Boot 应用:分离 REST API 和 Web 应用的最佳实践

    本文旨在探讨在 Spring Boot 项目中,如何有效地分离 REST API 和 Web 应用程序。针对小型项目,建议保持简单,将代码放在同一模块的不同包中。对于大型项目,则需要考虑可伸缩性、团队协作和性能需求,将前后端分离成两个独立的 Spring Boot 应用。文章将深入分析不同场景下的架…

    2026年9月25日 • 用户投稿
    300
  • 抖音短视频怎么加特效_抖音短视频添加特效的技巧

    抖音短视频怎么加特效_抖音短视频添加特效的技巧抖音短视频怎么加特效_抖音短视频添加特效的技巧抖音短视频怎么加特效_抖音短视频添加特效的技巧抖音短视频怎么加特效_抖音短视频添加特效的技巧

    合理使用特效可提升抖音视频观赏性,首先通过抖音内置拍摄特效在录制时添加美颜、滤镜或AR互动效果;其次在编辑页面为已拍视频加入光晕、震动等后期特效并调整参数;再通过叠加滤镜、动态元素和音效同步特效增强层次感;最后利用关键帧功能精确控制特效的出现时机与过渡动画,实现专业级视觉表现。 如果您在拍摄或编辑抖…

    2026年9月25日 • 用户投稿
    200
  • 163邮箱登录官网路径 163邮箱登录顺畅入口

    163邮箱登录官网路径 163邮箱登录顺畅入口163邮箱登录官网路径 163邮箱登录顺畅入口163邮箱登录官网路径 163邮箱登录顺畅入口163邮箱登录官网路径 163邮箱登录顺畅入口

    163邮箱登录官网路径为https://mail.163.com,支持网页、手机智能版、网易邮箱大师扫码及电脑客户端多端同步登录,结合安全验证机制与功能集成优势,提供顺畅、安全、高效的邮件管理体验。 163邮箱登录官网路径在哪里?这是不少网友都关注的,接下来由PHP小编为大家带来163邮箱登录顺畅入…

    2026年9月25日 • 用户投稿
    1100
  • Debian Node.js 日志备份与恢复策略

    Debian Node.js 日志备份与恢复策略Debian Node.js 日志备份与恢复策略Debian Node.js 日志备份与恢复策略Debian Node.js 日志备份与恢复策略

    为了保障 Debian 系统中 Node.js 应用的日志安全,本文提供一套完整的日志备份与恢复策略,确保系统故障或数据丢失时能够快速恢复。 一、日志备份 1.1 定期备份:利用 rsync rsync 是一款强大的文件同步工具,可实现日志文件的定期备份: # 创建备份目录mkdir -p /bac…

    2026年9月25日 • 用户投稿
    200
  • 通过索引访问 LinkedHashMap 的值

    通过索引访问 LinkedHashMap 的值通过索引访问 LinkedHashMap 的值通过索引访问 LinkedHashMap 的值通过索引访问 LinkedHashMap 的值

    通过索引访问 LinkedHashMap 的值 本文将探讨如何比较两个 LinkedHashMap 中具有相同键的值,并提供一种有效的解决方案。LinkedHashMap 是一种可以保持插入顺序的 Map 实现,但它并不支持像 List 那样通过索引直接访问元素。因此,当我们需要比较两个 Linke…

    2026年9月25日 • 用户投稿
    1200
  • 谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换

    谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换谷歌正测试“Handoff”功能 Android将原生支持多设备任务无缝切换

    据外媒android authority消息,谷歌正为android系统研发一项类似苹果“continuity/handoff”的跨设备任务延续功能。目前,相关线索已在google play服务的代码中被多次发现。 苹果的“Handoff”功能允许用户将iPhone上正在进行的操作——例如浏览网页或…

    2026年9月25日 • 用户投稿
    500
  • 如何使用Keras快速构建模型 Keras神经网络搭建入门教程

    如何使用Keras快速构建模型 Keras神经网络搭建入门教程如何使用Keras快速构建模型 Keras神经网络搭建入门教程如何使用Keras快速构建模型 Keras神经网络搭建入门教程如何使用Keras快速构建模型 Keras神经网络搭建入门教程

    使用 keras 快速搭建神经网络模型需掌握以下步骤:1. 安装 keras 并确认后端环境,推荐通过 tensorflow.keras 导入模块;2. 使用 sequential 模型堆叠层,定义输入形状、神经元数量和激活函数;3. 编译模型时选择合适的损失函数、优化器和评估指标;4. 准备数据并…

    2026年9月25日 • 用户投稿
    100
  • 鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相

    鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相鸿蒙智选2025秋季发布会,海雀摄像头三款新品惊艳亮相

    9月26日,2025 harmonyos connect伙伴峰会在深圳盛大举行,现场集中展示了鸿蒙生态下的最新智能硬件成果,涵盖全屋智能、智能安防等多个领域。其中,鸿蒙智选携手海雀推出的全新智能摄像头系列成为焦点,三款旗舰新品——雀蛋pro、雀蛋max(ai大模型升级版),以及行业首创的“双镜头四云…

    2026年9月25日 • 用户投稿
    000
  • 京东白条开了可以马上关闭吗?如何提升额度?了解京东白条的核心问题!

    京东白条开了可以马上关闭吗?如何提升额度?了解京东白条的核心问题!京东白条开了可以马上关闭吗?如何提升额度?了解京东白条的核心问题!京东白条开了可以马上关闭吗?如何提升额度?了解京东白条的核心问题!京东白条开了可以马上关闭吗?如何提升额度?了解京东白条的核心问题!

    作为京东金融旗下核心的消费信贷服务,京东白条凭借其便捷的开通与关闭机制持续吸引用户关注。最新平台统计显示,约37%的用户在成功开通白条后会思考“是否应立即注销”,而超过68%的用户表达了提升信用额度的强烈意愿。 一、京东白条开通与关闭的关键要点 1.1 操作步骤: 打开京东APP→进入“我的”页面→…

    2026年9月25日 • 用户投稿
    000
  • sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法

    sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法sublime怎么配置Docker环境进行代码编译 _sublime Docker开发环境配置方法

    Sublime Text可通过插件与Docker集成实现编译运行。1. 安装Terminus和Build Systems插件;2. 项目根目录创建Dockerfile定义环境;3. 配置自定义构建系统调用docker build和run命令;4. 可选使用Terminus面板查看输出,注意路径映射与…

    2026年9月25日 • 用户投稿
    800
  • Word文档插入尾注怎么做_Word文档插入尾注如何做详细方法

    Word文档插入尾注怎么做_Word文档插入尾注如何做详细方法Word文档插入尾注怎么做_Word文档插入尾注如何做详细方法Word文档插入尾注怎么做_Word文档插入尾注如何做详细方法Word文档插入尾注怎么做_Word文档插入尾注如何做详细方法

    插入尾注可提升文档专业性,操作步骤为:1. 定位光标;2. 点击“引用”选项卡;3. 点击“插入尾注”按钮;4. 在文档末尾输入注释内容。可通过“脚注和尾注”对话框自定义位置、编号格式及起始数,删除时建议通过正文编号移除以确保同步,系统会自动重新排序。 在Word文档中插入尾注,可以帮助你在文档末尾…

    2026年9月25日 • 用户投稿
    000

发表回复

登录后才能评论
关注微信