wordpress - 当 WooCommerce 产品搜索返回“未找到产品”时重定向到特定页面
问题描述
在 Woocommerce 中,我尝试使用以下代码片段重定向到我网站的特定页面,而不是在空产品搜索中显示“未找到结果”。
现在短代码[insert page id="99"]
不起作用,并显示[insert page id="99"]
为纯文本。如果我使用简码,任何简码都 '[recent_products per_page="4"]'
可以显示产品。
remove_action( 'woocommerce_no_products_found', 'wc_no_products_found' );
add_action( 'woocommerce_no_products_found', 'show_products_on_no_products_found', 20 );
function show_products_on_no_products_found() {
echo '<h4>' . __( 'Are u looking for this?', 'domain' ) . '</h4>';
echo do_shortcode( '[insert page id="99"]' );
}
但我想要的是重定向到帖子 ID 为 99 的特定 WordPress 页面。
当产品搜索返回“未找到产品”时,如何将用户重定向到特定页面?
解决方案
使用template_redirect
钩子,您可以在产品查询搜索中“未找到结果”时将用户重定向到特定页面,例如:
add_action( 'template_redirect', 'no_products_found_redirect' );
function no_products_found_redirect() {
global $wp_query;
if( isset($_GET['s']) && isset($_GET['post_type']) && 'product' === $_GET['post_type']
&& ! empty($wp_query) && $wp_query->post_count == 0 ) {
wp_redirect( get_permalink( 99 ) );
exit();
}
}
代码在您的活动子主题(或活动主题)的functions.php 文件中。测试和工作。
推荐阅读
- apollo - 如何将 password-js 正确集成到 apollo-server?
- java - 在 Spring Boot 项目中的 Cucumber 测试之前运行 Flyway 脚本
- python - 线程时如何中断 Python I/O 操作?
- javascript - 无法在 Mongoose 中聚合。参数必须是聚合管道运算符
- phpstorm - PhpStorm - WSL2 - 无法保存设置
- blazor - Blazor WASM 客户端加载文件两次
- hadoop - org.apache.hadoop.yarn.exceptions.YarnException:不完整的实体,没有实体 ID/类型
- javascript - 我想从数组中返回一个 JSON 对象
- facebook-comments - Facebook评论管理员添加/删除问题
- r - 改进计算器-如何访问剪贴板,添加更多数字和更改操作顺序