php 覆盖WooCommerce模板部分创建一个无限循环

6ojccjat  于 2022-12-10  发布在  PHP
关注(0)|答案(1)|浏览(134)

我已经创建了一个函数,覆盖WooCommerce template-part在我的自定义插件single-product,如果满足一定的 meta值。但当有一个自定义模板部分的相关产品,它只是去一个无限循环,因为它加载自定义模板内相关产品太。我如何才能避免加载模板部分相关产品?

function override_woo_template_part($template, $slug, $name) {

  global $post;

  $product = wc_get_product($post->ID);
  $myplugin_type = $product->get_meta('_myplugin_type');
  $path = '';

  if ($name && !empty($myplugin_type) && $myplugin_type != 'default') {

    $template_directory = myplugin_directory_path() . '/woocommerce/';
    $path = $template_directory . "{$slug}-{$myplugin_type}.php";

  }

  return file_exists($path) ? $path : $template;

}
add_filter('wc_get_template_part', 'override_woo_template_part', 10, 3);
py49o6xq

py49o6xq1#

正如@VijayHardaha建议的,如果文件名$name等于single-product,则添加验证以仅加载template-part

function override_woo_template_part($template, $slug, $name) {

  global $post;

  $product = wc_get_product($post->ID);
  $myplugin_type = $product->get_meta('_myplugin_type');
  $path = '';

  if ($name && $name == 'single-product' && !empty($myplugin_type) && $myplugin_type != 'default') {

    $template_directory = myplugin_directory_path() . '/woocommerce/';
    $path = $template_directory . "{$slug}-{$myplugin_type}.php";

  }

  return file_exists($path) ? $path : $template;

}
add_filter('wc_get_template_part', 'override_woo_template_part', 10, 3);

相关问题