WooCommerce переопределить шаблон одного товара
Столкнулся с задачей переопределить шаблон только у одного товара.
Зная, что у Wordpress есть иерархическая загрузка шаблона по типу, идентификатору, slug и т.п. Решил "приделать" подобное к WooCommerce.
Собрал "сырцы".
Главный
add_filter( 'template_include', 'custom_single_product_template_include', 99, 1 );
function custom_single_product_template_include( $template ) {
if ( is_singular('product') && (get_the_ID()==11)) {
$template = get_stylesheet_directory() . '/woocommerce/single-product-11.php';
}
return $template;
}
Из кодекса для получения данных
function add_posttype_slug_template( $single_template ) {
$object = get_queried_object();
$single_posttype_postname_template = locate_template( "single-{$object->post_type}-{$object->post_name}.php" );
if ( file_exists( $single_posttype_postname_template ) ) {
return $single_posttype_postname_template;
} else {
return $single_template;
}
}
add_filter( 'single_template', 'add_postType_slug_template', 10, 1 );
И еще возможно где-то применить
function get_custom_post_type_template($single_template) {
global $post;
if ($post->post_type == 'product') {
$single_template = dirname( __FILE__ ) . '/single-template.php';
}
return $single_template;
}
add_filter( 'single_template', 'get_custom_post_type_template' );
Заметили ошибку, можете подсказать еще что-то? - Обращаемся сюда