我需要覆盖我的帐户Woocommerce模板。为了使用子主题,我尝试了以下解决方案:
添加了这一行:
die('test');
没有预期的结果(消息'test')。
还使用位于
中的my-account.php文件尝试了上述操作可湿性粉剂内容/主题/阿瓦达索-小孩子主题/ woocommerce /模板/我的账户
没有预期的结果。
还尝试了上面的文件夹:
wp-content/themes/Avada/woocommerce/myaccount
没有预期的结果。
还在文件夹中尝试了以上内容:
wp-content/plugins/woocommerce/templates/myaccount
这很有效,但这不是一个好习惯。
我做错了什么?
我正在使用WP 4.1,Woocommerce 2.2.10和Avada Theme 3.7.2安装并激活Avada Child Theme。
关于系统状态Woocommerce页面上的第1点,我看到了:
Avada/woocommerce/cart/cart.php,
Avada/woocommerce/cart/shipping-calculator.php,
Avada/woocommerce/checkout/form-checkout.php,
Avada/woocommerce/checkout/review-order.php,
Avada/woocommerce/checkout/thankyou.php,
Avada/woocommerce/content-product.php,
Avada/woocommerce/loop/loop-start.php,
Avada/woocommerce/loop/pagination.php,
Avada/woocommerce/myaccount/form-edit-address.php,
Avada-Child-Theme/woocommerce/myaccount/my-account.php,
Avada/woocommerce/single-product/add-to-cart/variable.php,
Avada/woocommerce/single-product/product-image.php,
Avada/woocommerce/single-product/product-thumbnails.php,
Avada/woocommerce/single-product/short-description.php,
Avada/woocommerce/single-product/tabs/description.php,
Avada/woocommerce/single-product/title.php
所以,似乎没问题,但我的更改不会影响模板。我还尝试进行其他更改,例如在p html标记内添加一些文本 - 没有效果。
请帮忙!
编辑:
我生成了活动插件列表:
` [0]=> string(29) "gravityforms/gravityforms.php"
[1]=> string(27) "LayerSlider/layerslider.php"
[2]=> string(25) "duplicator/duplicator.php"
[3]=> string(27) "fusion-core/fusion-core.php"
[4]=> string(58) "gravity-forms-css-ready-selector/gf-readyclasses-addon.php"
[5]=> string(23) "revslider/revslider.php"
[6]=> string(21) "woochimp/woochimp.php"
[7]=> string(49) "woocommerce-customizer/woocommerce-customizer.php"
[8]=> string(71) "woocommerce-gravityforms-product-addons/gravityforms-product-addons.php"
[9]=> string(51) "woocommerce-pdf-invoice/woocommerce-pdf-invoice.php"
[10]=> string(65) "woocommerce-points-and-rewards/woocommerce-points-and-rewards.php"
[11]=> string(61) "woocommerce-product-details-customiser/details-customiser.php"
[12]=> string(27) "woocommerce/woocommerce.php"
[13]=> string(39) "woothemes-updater/woothemes-updater.php"`
答案 0 :(得分:1)
在functions.php
<?php
add_filter('wc_get_template', 'ovr_product_meta_template', 10, 5);
function ovr_product_meta_template($located, $template_name, $args, $template_path, $default_path) {
if ('single-product/meta.php' == $template_name) {
$default_path = get_stylesheet_directory();
$template_path = 'woocommerce/';
$located = wc_locate_template($template_name, $template_path, $default_path);
}
return $located;
}
?>
答案 1 :(得分:0)
我来到这个帖子是因为我有同样的问题。我在主题文件中做了一些研究,以找出所有邪恶的来源所在。
首先关闭:在子主题中替换my-account页面的模板没有用,也没用主题。原因:Avada / Fusion Core文件在整个my-account页面上都有覆盖。
我已经检查了主题的functions.php,avada-functions.php以及各种my-account.php和my-address.php;没有。然后我开始打开几个随机文件和文件夹,直到我来到这个文件:Avada / includes / woo-config.php。
似乎有几个钩子,用静态代码设置覆盖原始的woo-commerce模板文件,如下所示。 &#39; woocommerce_before_my_account&#39; hook(进一步在php文件中)用于显示我的帐户页面的内容。
//function under myaccount hooks
remove_action( 'woocommerce_thankyou', 'woocommerce_order_details_table', 10 );
add_action( 'woocommerce_thankyou', 'avada_woocommerce_view_order', 10 );
/* end checkout hooks */
/* begin my-account hooks */
add_action( 'woocommerce_before_customer_login_form', 'avada_woocommerce_before_customer_login_form' );
function avada_woocommerce_before_customer_login_form()
{
global $woocommerce;
if ( get_option( 'woocommerce_enable_myaccount_registration' ) !== 'yes' ) :
?>
<div id="customer_login" class="woocommerce-content-box full-width">
<?php
endif;
}
add_action( 'woocommerce_after_customer_login_form', 'avada_woocommerce_after_customer_login_form' );
function avada_woocommerce_after_customer_login_form()
{
global $woocommerce;
if ( get_option( 'woocommerce_enable_myaccount_registration' ) !== 'yes' ) :
?>
</div>
<?php
endif;
}
function avada_top_user_container() {
global $smof_data, $woocommerce, $current_user;
echo '<div class="avada_myaccount_user">';
echo '<span class="myaccount_user_container">';
echo '<span class="username">';
if ( $current_user->display_name ) {
printf( '%s, %s:', __( 'Hallo', 'Avada' ), $current_user->display_name );
} else {
echo __( 'Hallo', 'Avada' );
}
echo '</span>';
if ( $smof_data['woo_acc_msg_1'] ) {
echo '<span class="msg">';
echo $smof_data['woo_acc_msg_1'];
echo '</span>';
}
if ( $smof_data['woo_acc_msg_2'] ) {
echo '<span class="msg">';
echo $smof_data['woo_acc_msg_2'];
echo '</span>';
}
echo '<span class="view-cart">';
printf( '<a href="%s">%s</a>', get_permalink( get_option( 'woocommerce_cart_page_id' ) ), __( 'View Cart', 'Avada' ) );
echo '</span>';
echo '</span>';
echo '</div>';
}
遗憾的是,这不是解决方案,但它解释了为什么自定义或编辑的原始my-account不起作用。我已经与Avada的Theme-Fusion作者一起创建了这个问题的门票。当我收到回复时,我会再次办理登机手续。
答案 2 :(得分:0)
由于主题Avada始终与WooCommerce的最新版本和即将发布的版本保持同步,因此他们为该版本设置了一个兼容性文件夹。在撰写本文时,2.7即将发布,Avada在文件夹compatability
内创建了一个名为woocommerce
的文件夹。在该文件夹下,旧的版本用文件夹表示,在这个例子中默认存在名为2.6
的文件夹。
在类Avada_WooCommerce
中,您可以找到由Avada连接的名为woocommerce_template_path
的过滤器,定义一个检查当前版本是2.7还是2.6并将路径返回到模板文件夹的函数。由于2.7尚未发布,2.6正在运行,为此,该文件夹设置为woocommerce/compatability/2.6
。
因此,如果您正在运行2.6并希望覆盖子主题中的模板,请在子主题文件夹中创建一个名为woocommerce/compatability/2.6
的文件夹,并将覆盖模板放在那里。
如果您在出现时升级到WooCommerce 2.7,请记得将覆盖模板放在通常的文件夹woocommerce
中。
花了我一些时间来弄清楚,我希望它有所帮助!