Создавая магазин Woocommerce, я хотел добавить пользовательские теги alt и title к изображениям продуктов на основе названия продукта, тегов и одного атрибута. Я добавил код в дочерний файл functions.php, и он, похоже, сработал - как на фронте, так и в медиа-менеджере я получил нужные мне теги alt и title, все было в порядке.
Пока я не попытался отредактировать страницу продукта в административной области .... она загружается только наполовину (весь раздел под полем основного содержимого отсутствует), не показывает добавленных тегов продукта, а на изображении продукта написано:
Неустранимая ошибка: вызов функции-члена get_tags() при нулевом значении в functions.php в строке 112
Мой код в дочернем файле functions.php (строка $authortags 112):
// Change images alt and title tag
add_filter('wp_get_attachment_image_attributes', 'change_attachement_image_attributes', 20, 2);
function change_attachement_image_attributes($attr, $attachment) {
global $post, $product;
if ($post->post_type == 'product') {
$title = $post->post_title;
$authortags = strip_tags ($product->get_tags());
$editor = $product->get_attribute( 'pa_szerkesztette' );
$attr['alt'] = $title .' '. $authortags .' '. $editor;
$attr['title'] = $title .' '. $authortags .' '. $editor;
}
return $attr;
}
То же самое со всеми страницами продукта. Я предполагаю, что проблема заключается в удалении тегов, и я должен найти другой метод, чтобы получить их в коде, но ничего из того, что я пробовал, не сработало (мои знания php довольно ограничены...).
Может ли кто-нибудь помочь мне, что я делаю неправильно, как изменить код, чтобы получить эту работу? Спасибо
$product
не является объектом продукта, а является нулевой переменной. Вы не можете предполагать, что$product
всегда глобально установлено. Было бы лучше получить продукт из идентификатора поста.$product = wc_get_product( $post->ID );
- person helgatheviking   schedule 16.05.2017