大家好 如果你想use the theme,use what others have said,但如果你想在plugin中使用,请遵循我的指南。 像你一样,我想在shop_loop中,所以我使用woocommerce提供的钩子 我们将一起检查content-product.php挂钩 content-product.php位置:wp-content\plugins\woocommerce\templates\content-product.php您可以检查此文件中的钩子并通过remove_action删除它
在源代码的帮助下,我们可以用我们的函数You Can Clear Hook重写这些钩子,并像我一样删除这个函数:
// IMPORTANT: pls change function name :P i copy this in my plugin source
add_action('wp_head', 'kdev_remove_all_actions_in_shop', 99);
function kdev_remove_all_actions_in_shop(){
// IMPORTANT: this if is important, without it HOOK will be remove in All pages
if(function_exists('is_shop') && is_shop()){
// remove All Action in content-product & rewrite them :P
// Don't Change This Part [START]
remove_action('woocommerce_before_shop_loop_item',
'woocommerce_template_loop_product_link_open');
//
remove_action('woocommerce_before_shop_loop_item_title',
'woocommerce_show_product_loop_sale_flash');
remove_action('woocommerce_before_shop_loop_item_title',
'woocommerce_template_loop_product_thumbnail');
//
remove_action('woocommerce_shop_loop_item_title',
'woocommerce_template_loop_product_title');
//
remove_action('woocommerce_after_shop_loop_item_title',
'woocommerce_template_loop_rating', 5);
remove_action('woocommerce_after_shop_loop_item_title',
'woocommerce_template_loop_price');
//
remove_action('woocommerce_after_shop_loop_item',
'woocommerce_template_loop_product_link_close', 5);
remove_action('woocommerce_after_shop_loop_item',
'woocommerce_template_loop_add_to_cart');
// Don't Change this Part HERE [END]
}
}
然后一个接一个地写:
function kdev_woocommerce_before_shop_loop_item(){
// IMPORTANT: this if is important
if(function_exists('is_shop') && is_shop()){
global $product;
$link = apply_filters( 'woocommerce_loop_product_link', get_the_permalink(), $product );
echo '<a href="' . esc_url( $link ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
}
}
add_action('woocommerce_before_shop_loop_item', 'kdev_woocommerce_before_shop_loop_item');
...
做其他的像这样的事 下面是我的完整源代码,请修改函数名:P:
// HERE IS MY CODE TO CHANGE SHOP CATEGORY IN PLUGN [START]
function kdev_remove_all_actions_in_shop(){
// IMPORTANT: this if is important, without it HOOK will be remove in All pages
if(function_exists('is_shop') && is_shop()){
// remove All Action in content-product & rewrite them :P
// Don't Change This Part [START]
remove_action('woocommerce_before_shop_loop_item', 'woocommerce_template_loop_product_link_open');
//
remove_action('woocommerce_before_shop_loop_item_title', 'woocommerce_show_product_loop_sale_flash');
remove_action('woocommerce_before_shop_loop_item_title', 'woocommerce_template_loop_product_thumbnail');
//
remove_action('woocommerce_shop_loop_item_title', 'woocommerce_template_loop_product_title');
//
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_rating', 5);
remove_action('woocommerce_after_shop_loop_item_title', 'woocommerce_template_loop_price');
//
remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_product_link_close', 5);
remove_action('woocommerce_after_shop_loop_item', 'woocommerce_template_loop_add_to_cart');
// Don't Change this Part HERE [END]
}
}
add_action('wp_head', 'kdev_remove_all_actions_in_shop', 99);
function kdev_woocommerce_before_shop_loop_item(){
// IMPORTANT: this if is important
if(function_exists('is_shop') && is_shop()){
global $product;
$link = apply_filters( 'woocommerce_loop_product_link', get_the_permalink(), $product );
echo '<a href="' . esc_url( $link ) . '" class="woocommerce-LoopProduct-link woocommerce-loop-product__link">';
}
}
add_action('woocommerce_before_shop_loop_item', 'kdev_woocommerce_before_shop_loop_item');
function kdev_woocommerce_before_shop_loop_item_title(){
// IMPORTANT: this if is important
if(function_exists('is_shop') && is_shop()){
global $product;
// Show Sale
wc_get_template( 'loop/sale-flash.php' );
// Show Thumbnail
echo woocommerce_get_product_thumbnail();
}
}
add_action('woocommerce_before_shop_loop_item_title', 'kdev_woocommerce_before_shop_loop_item_title');
function kdev_woocommerce_shop_loop_item_title(){
// IMPORTANT: this if is important
if(function_exists('is_shop') && is_shop()){
global $product;
echo '<h2 class="' . esc_attr( apply_filters( 'woocommerce_product_loop_title_classes', 'woocommerce-loop-product__title' ) ) . '">' . get_the_title() . '</h2>'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
}
add_action('woocommerce_shop_loop_item_title', 'kdev_woocommerce_shop_loop_item_title');
function kdev_woocommerce_after_shop_loop_item_title(){
// IMPORTANT: this if is important
if(function_exists('is_shop') && is_shop()){
global $product;
// Show Rating
wc_get_template( 'loop/rating.php' );
// Show Price
wc_get_template( 'loop/price.php' );
}
}
add_action('woocommerce_after_shop_loop_item_title', 'kdev_woocommerce_after_shop_loop_item_title');
function kdev_woocommerce_after_shop_loop_item(){
// IMPORTANT: this if is important
if(function_exists('is_shop') && is_shop()){
global $product;
// Close A Tag First
echo '</a>';
// Show Add To Cart.
woocommerce_template_loop_add_to_cart(); // source: https://wp-kama.com/plugin/woocommerce/function/woocommerce_template_loop_add_to_cart
}
}
add_action('woocommerce_after_shop_loop_item', 'kdev_woocommerce_after_shop_loop_item');
// HERE IS MY CODE TO CHANGE SHOP CATEGORY IN PLUGN [END]
6条答案
按热度按时间snvhrwxg1#
我知道太晚了,你现在可能已经想明白了。在任何情况下,您想要对WooCommerce商店页面进行的更改都需要在
archive-product.php
中完成,创建子主题并进行这些更改会更安全。在子主题中进行增强和自定义是最佳做法,这样您就可以随时更新父主题,而不会影响您的商店。我希望这对您有帮助,有关如何使用WooCommerce短代码来定制您的商店的更多信息,可以在here中找到。
nle07wnf2#
为了补充银林维的答案-他使用
is_page
,但这只适用于WordPress页面。对于woocommerce,你需要使用类似is_woocommerce()
的东西。参见Woocommerce conditional tags page.我的示例代码使用
is_shop
条件标记,因为这是您想要更改的页面。代码get_template_part( 'content', 'shop' );
将调用主题根文件夹中的文件content-shop.php。此代码将添加到wp-content\themes\*theme*\woocommerce\archive-product.php
的顶部,您可以从wp-content\plugins\woocommerce\templates\archive-product.php
复制此代码您可以将其添加到我的文件中的
get_header( 'shop' );
第23行之前-整个页面将从您的模板中绘制。如果您想保留商店页面的标题,则将此代码放在get_header
代码之后。记住在你的文件中也要包括一个页脚w51jfk4q3#
解决方案(不完美),我认为最好的工作,直到有人找到一种方法,实际上从 Jmeter 板更改模板:
添加:
到
content-product.php
在我的主题的woocommerce文件夹.j9per5c44#
在WP 6.2和WooCommerce 8.2.0中测试
大家好
如果你想
use the theme
,use what others have said
,但如果你想在plugin
中使用,请遵循我的指南。像你一样,我想在
shop_loop
中,所以我使用woocommerce提供的钩子我们将一起检查content-product.php挂钩
content-product.php
位置:wp-content\plugins\woocommerce\templates\content-product.php
您可以检查此文件中的钩子并通过remove_action
删除它阅读它:P.是很重要的事
这是
content-product.php
文件中此日期和此版本中的所有钩子:示例:“HOOK”=>函数名:描述
“woocommerce_before_shop_loop_item”=>woocommerce_template_loop_product_link_open:用于打开
<a>
标签,以便用户可以单击它。source“woocommerce_before_shop_loop_item_title”=>woocommerce_show_product_loop_销售_flash:显示销售闪光灯。source
“woocommerce_before_shop_loop_item_title”=>woocommerce_template_loop_product_thumbnail:获取产品缩略图。source
“woocommerce_shop_loop_item_title”=>woocommerce_template_loop_product_title:显示
h2
标签标题。source“woocommerce_after_shop_loop_item_title”=>woocommerce_template_loop_rating:显示评级。source
“woocommerce_after_shop_loop_item_title”=>woocommerce_template_loop_price:显示价格。source
“woocommerce_after_shop_loop_item”=>woocommerce_template_loop_product_link_close:关闭
a
标记。source“woocommerce_after_shop_loop_item”=>woocommerce_template_loop_add_to_cart:显示添加到购物车按钮。source
阅读后
在源代码的帮助下,我们可以用我们的函数You Can Clear Hook重写这些钩子,并像我一样删除这个函数:
然后一个接一个地写:
做其他的像这样的事
下面是我的完整源代码,请修改函数名:P:
对不起,如果我的英语不正确。我得到了Google翻译的帮助。我希望它能帮助你
w8f9ii695#
如果你更喜欢使用代码,你可以通过wp_redirect创建一个从原始商店页面到你的页面的重定向。
更详细的教程可以在here中找到
zynd9foi6#
这是不可能创建自定义模板的商店页面,只需复制并粘贴woocommerce模板到您的主题文件夹,并尝试在content-product.php模板工作。