Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
要覆盖在woocommerce-functions.php文件中编写的函数吗_Php_Wordpress_Wordpress Theming - Fatal编程技术网

要覆盖在woocommerce-functions.php文件中编写的函数吗

要覆盖在woocommerce-functions.php文件中编写的函数吗,php,wordpress,wordpress-theming,Php,Wordpress,Wordpress Theming,我想修改/覆盖woocommerce-functions.php文件中编写的函数,但不想修改woocommerce-functions.php文件。也就是说,我希望在插件或主题中实现这一点。可以覆盖woocommerce函数,我最近这样做了,并将所有woocommerce扩展功能添加到我的主题的functions.php文件中,以便woocommerce插件文件保持不变,并且可以安全更新 本页提供了一个示例,说明如何删除他们的操作并将其替换为自己的操作- 本页给出了在不删除其功能的情况下扩展其

我想修改/覆盖woocommerce-functions.php文件中编写的函数,但不想修改woocommerce-functions.php文件。也就是说,我希望在插件或主题中实现这一点。

可以覆盖woocommerce函数,我最近这样做了,并将所有woocommerce扩展功能添加到我的主题的functions.php文件中,以便woocommerce插件文件保持不变,并且可以安全更新

本页提供了一个示例,说明如何删除他们的操作并将其替换为自己的操作-

本页给出了在不删除其功能的情况下扩展其功能的示例,以及使用子主题的示例-


希望这对您有所帮助:)

如果您有子主题,您可以将相关文件复制到主题中并重写副本。副本将优先于WooCommerce版本使用

WooCommerce提供了一个模板系统。可以覆盖其他功能。在不修改核心文件的情况下定制WooCommerce的好方法是使用钩子-

如果使用钩子添加或操作代码,则可以将自定义代码添加到theme functions.php文件中

  • 使用动作挂钩-
要执行自己的代码,可以使用操作钩子do_action('action_name')

请参阅下面的示例,了解如何放置代码:

add_action('action_name', 'your_function_name');

function your_function_name() 
{
// Your code
}
  • 使用过滤器挂钩-
使用apply_Filter('Filter_name',$variable)在整个代码中调用过滤器挂钩

要操作传递的变量,可以执行以下操作:

add_filter('filter_name', 'your_function_name');

function your_function_name( $variable )
 {
// Your code
return $variable;
}
在这里,您可以获得WooCommerce操作和过滤器挂钩-

我需要为移动设备上的视频添加“播放”按钮(默认情况下,此按钮仅显示在桌面上)

我需要重写
wp content/themes/gon/framework/theme_functions.php
中的函数:

function ts_template_single_product_video_button(){
    if( wp_is_mobile() ){
        return;
    }
    global $product;
    $video_url = get_post_meta($product->id, 'ts_prod_video_url', true);
    if( !empty($video_url) ){
        $ajax_url = admin_url('admin-ajax.php', is_ssl()?'https':'http').'?ajax=true&action=load_product_video&product_id='.$product->id;
        echo '<a class="ts-product-video-button" href="'.esc_url($ajax_url).'"></a>';
    }
}

它似乎对我有用,但在我的情况下,我必须将钩子名称更改为remove_action('template_redirect','woocommerce_save_password');添加操作('template_redirect'、'theme_down\u save_password');uploadwp链接当前已断开。仅供参考。
// Enable tour video on mobile devices
remove_action('ts_before_product_image', 'ts_template_single_product_video_button', 1);
add_action('ts_before_product_image', 'ts_template_single_product_video_button_w_mobile', 1);
function ts_template_single_product_video_button_w_mobile(){
    global $product;
    $video_url = get_post_meta($product->id, 'ts_prod_video_url', true);
    if( !empty($video_url) ){
        $ajax_url = admin_url('admin-ajax.php', is_ssl()?'https':'http').'?ajax=true&action=load_product_video&product_id='.$product->id;
        echo '<a class="ts-product-video-button" href="'.esc_url($ajax_url).'"></a>';
    }
}

?>