php Woocommerce商店页面自定义模板

j91ykkif  于 2023-10-15  发布在  PHP
关注(0)|答案(6)|浏览(170)

据我所知,默认情况下,Woocommerce商店页面使用产品存档模板。我正在寻找的是使用自定义模板的商店页面。
我是这么做的:
1.创建模板“my-shop”
1.创建页面“我的店”->选择模板“我的店”
1.选择“我的商店”作为Woocommerce商店页面
但是我对“my-shop”模板所做的更改都没有出现在商店页面上。
我错过了什么?我不想改变产品档案本身,只是商店页面.
有没有办法禁用产品存档作为默认的商店页面?
谢谢

snvhrwxg

snvhrwxg1#

我知道太晚了,你现在可能已经想明白了。在任何情况下,您想要对WooCommerce商店页面进行的更改都需要在archive-product.php中完成,创建子主题并进行这些更改会更安全。在子主题中进行增强和自定义是最佳做法,这样您就可以随时更新父主题,而不会影响您的商店。
我希望这对您有帮助,有关如何使用WooCommerce短代码来定制您的商店的更多信息,可以在here中找到。

nle07wnf

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代码之后。记住在你的文件中也要包括一个页脚

if (is_shop()) {
 get_template_part( 'content', 'shop' );
} else  {  
#normal archive-product code here
}
w51jfk4q

w51jfk4q3#

解决方案(不完美),我认为最好的工作,直到有人找到一种方法,实际上从 Jmeter 板更改模板:
添加:

<?php
if (is_page( 'Page Title' ) ):
  # Do your stuff
endif;
?>

content-product.php在我的主题的woocommerce文件夹.

j9per5c4

j9per5c44#

在WP 6.2和WooCommerce 8.2.0中测试

大家好
如果你想use the themeuse 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重写这些钩子,并像我一样删除这个函数:

// 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]

对不起,如果我的英语不正确。我得到了Google翻译的帮助。我希望它能帮助你

w8f9ii69

w8f9ii695#

如果你更喜欢使用代码,你可以通过wp_redirect创建一个从原始商店页面到你的页面的重定向。

add_action('template_redirect', 'bc_010101_redirect_woo_pages');
function bc_010101_redirect_woo_pages()
{

 if (is_shop())
 {

  wp_redirect('your_shop_url_here');
  exit;
 }
}

更详细的教程可以在here中找到

zynd9foi

zynd9foi6#

这是不可能创建自定义模板的商店页面,只需复制并粘贴woocommerce模板到您的主题文件夹,并尝试在content-product.php模板工作。

相关问题