如何使用Avada Child Theme覆盖Woocommerce模板

时间:2015-01-30 11:33:16

标签: php wordpress templates themes woocommerce

我需要覆盖我的帐户Woocommerce模板。为了使用子主题,我尝试了以下解决方案:

  1. 将woocommerce / templates中的my-account.php文件复制到wp-content / themes / Avada-Child-Theme / woocommerce / myaccount
  2. my-account.php第9行(正好在评论下方)的
  3. 添加了这一行:

    die('test');
    
  4.   

    没有预期的结果(消息'test')。

    1. 还使用位于

      中的my-account.php文件尝试了上述操作

      可湿性粉剂内容/主题/阿瓦达索-小孩子主题/ woocommerce /模板/我的账户

      没有预期的结果。

    2. 还尝试了上面的文件夹:

      wp-content/themes/Avada/woocommerce/myaccount
      
    3.   

      没有预期的结果。

      1. 还在文件夹中尝试了以上内容:

         wp-content/plugins/woocommerce/templates/myaccount
        
      2. 这很有效,但这不是一个好习惯。

        我做错了什么?

        我正在使用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"`
        

3 个答案:

答案 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中。

花了我一些时间来弄清楚,我希望它有所帮助!