У меня возникли проблемы с редактированием шаблона Woocommerce с помощью крючков. По сути, я бы просто хотел изменить шаблон product-image
, чтобы вместо ссылки на изображение загруженного продукта он ссылался на сообщение о продукте.Переопределение шаблона с помощью крючков
Текущий product-image.php
шаблон WooCommerce имеет
global $post, $woocommerce, $product;
?>
<div class="images">
<?php
if (has_post_thumbnail()) {
$image_title = esc_attr(get_the_title(get_post_thumbnail_id()));
$image_link = wp_get_attachment_url(get_post_thumbnail_id());
$image = get_the_post_thumbnail($post->ID, apply_filters('single_product_large_thumbnail_size', 'shop_single'), array(
'title' => $image_title
));
$attachment_count = count($product->get_gallery_attachment_ids());
if ($attachment_count > 0) {
$gallery = '[product-gallery]';
} else {
$gallery = '';
}
echo apply_filters('woocommerce_single_product_image_html', sprintf('<a href="%s" itemprop="image" class="woocommerce-main-image zoom" title="%s" rel="prettyPhoto' . $gallery . '">%s</a>', $image_link, $image_title, $image), $post->ID);
} else {
echo apply_filters('woocommerce_single_product_image_html', sprintf('<img src="%s" alt="Placeholder" />', woocommerce_placeholder_img_src()), $post->ID);
}
?>
<?php do_action('woocommerce_product_thumbnails'); ?>
</div>
Я уверен в том, как адаптировать echo apply_filters('woocommerce_single_product_image_html', sprintf('<a href="%s" itemprop="image" class="woocommerce-main-image zoom" title="%s" rel="prettyPhoto' . $gallery . '">%s</a>', $image_link, $image_title, $image), $post->ID);
изменить %s
на ссылку на этот пост.
Крючок я использую:
add_action('woocommerce_product_thumbnails', 'custom_links');
function custom_links() {
//code
}
Может кто-нибудь помочь мне получить некоторое направление с этим?
Благодарим за отзыв! Функция, похоже, работает, однако, когда я меняю значение «$ link», она удаляет изображение, любую идею, как я могу просто изменить href и оставить src таким же? – Chris
@Chris Это потому, что переменная $ link содержит html как "". Либо используйте preg_replace() (или любые другие строковые функции), чтобы изменить только URL-адрес или просто восстановить целую строку. У вас есть идентификатор продукта. Просто получите изображение и url и переделайте строку. – ViszinisA
Я получаю фатальные ошибки, когда пытаюсь заменить строку $ link. И.Е. чтобы он просто отображал изображение, даже не пытаясь связать его с функцией post_ функции custom_links ($ link, $ post_id) { $ link = ""; return $ link; } 'Я думаю, что здесь отсутствует правило. – Chris