возможно заказать разработку или сопровождение, услуги вашего сайта/блога

написано: — 
отредактировано: 2021-11-05
издатель: в теме: WooCommerce и WordPress
Запросто с WordPress — создание сайтов ATs media

Как сделать атрибут товара активной произвольной ссылкой — WooCommerce

Этот пост посвящен теме WooCommerce, в которой разбираем полезные настройки плагина. Оптимизируем работу магазина. Сегодня рассмотрим решения по вопросу, как сделать атрибут товара произвольной ссылкой?

 

Я этот код уже видел ранее, однако, заказчикам подобный функционал не требовался и код лежал без дела. Но вот на днях ко мне обратилась одна дама, у которой магазин кормов для животных и которой, как оказалось, этот код весьма кстати.

 

Дело в том, что пока что ее сайт весьма сыроват, и много примеров дать не смогу, но вот кодом поделюсь на примера тестового сайта:

 


 

 

 

 

 

Функционал отработки кода подойдет тем пользователям, которые каким-то образом продвигают некие страницы и на которые хотят отправить пользователя. Или там сообщить о возможных бонусах, скидках, профитах…

 

Произвольную ссылку возможно поставить временно (отдельно для конкретного атрибута).

 

Если у вас вполне себе активный сайт, то и в этом случае можно делать атрибут товара произвольной ссылкой — все это никоим образом не навредит рабочему магазину.

 

 

 

 

к оглавлению

Магазин на WooCommerce — как добавить атрибуту товара произвольную ссылку

 

 

 

 

По умолчанию — ссылка атрибута ведет на соответствующий архив (ленту и т.п.) по атрибутам.

 

Наша задача — сделать ссылку одного из… или несколько атрибутов с произвольной активной ссылкой (URLом).

 

 

В итоге получится по функционалу примерно так — произвольных ссылок атрибутов может быть несколько и они могут быть совершенно индивидуальны — попросту ведущие на разные страницы:

 

 

 

Магазин на WooCommerce - как сделать атрибут товара произвольной ссылкой

 

 

ссылка на архив атрибута будет выглядеть примерно так:

 

 

домен.ru/primer/primer-url/

 

 

где: primer Атрибут и: primer-url Термин (разновидность атрибута)…

 

 

Произвольная ссылка атрибута примерно таким макаром:

 

 

домен.ru/custom link/ — произвольная ссылка.

 

 

 

к оглавлению

создание атрибута товара — настройки

 

 

Если перейти в настройки атрибута и поставить галочку в соответственном окне: проходим в Товары/Атрибуты — картинка ниже — то в этом случае ссылка атрибута будет по умолчанию вести на страницу архива.

 

 

 

Магазин на WooCommerce - как добавить атрибуту товара активную ссылку

 

 

 

Для примера можете создать некий атрибут — я создал, не долго фантазируя — Пример.

 

 

Ключевая фишка работы данного кода в том, что возможно атрибуту (имени товара атрибута: вес, рост, цвет, возраст и т.п.) задавать произвольную ссылку! Поле URL будет видно и при создании значения товара атрибута и при его редактировании!..

 

 

В это поле вписываем требуемую произвольную ссылку, которая будет вести на отдельную страницу (любую). Если оставить поле пустым — товар (имя товара) будет БЕЗ ССЫЛКИ !!

 

 

 

Как сделать атрибут товара активной ссылкой - WooCommerce

 

 

 

В текстовом редакторе настройки выглядеть таким образом, думаю, с этими опциями вы уже знакомы: …выбираете Атрибут и присваиваете имя товара (значение)

 

 

Как сделать атрибут товара активной ссылкой - WooCommerce

 

 

 

 

в плане по теме полезно:

 

32 важных плагина для магазина на WooCommerce.

Добавляем краткое описание (Description) к товару

Наиболее полная подборка, пояснения Условные теги woocommerce

Woocommerce шорткоды и их применение…

Отключаем подгрузку стилей, скрипов для страниц, не относящихся к Wooсommerce.

 

 

 

 

 

к оглавлению

сделаем ссылку товара атрибута произвольной

 

 

 

 

Внимание! если требуется произвольная ссылка на товар атрибута, то в этом случае непременно очистите чекбокс в опции Включить архивы:

 

 

 

 

Магазин на WooCommerce - как добавить атрибуту товара активную ссылку

 

 

 

 

По итогу настроек — не забываем зайти в админке в Настройки/Произвольные ссылки и перезаписать данные… Просто зайдите и нажмите кнопку Сохранить… …в некоторых случаях это важное мероприятие!..

 

 

 

А вот и код, который призван сделать ссылку на товар атрибута произвольной (либо без ссылки).

 

 

Добавляем код в файл, в который вы добавляете все примочки по магазу… либо личный плагин, либо же дочернюю темукак правильно нужно создавать дочернюю тему шаблона
большинство пользователей достаточно невнимательно относятся к вопросу создания дочерней темы (и напрасно!!), а по истечению времени приходится здорово чтобы НЕ перенастраивать активный шаблон…
… Ну или для тестирования — банально в functions-php.

 

 

к оглавлению

атрибут товара произвольной ссылкой:

 

 

 

 

/**
* Register term fields // регистрируем поля терминов
*/
add_action( 'init', 'register_attributes_url_meta' );
function register_attributes_url_meta() {
$attributes = wc_get_attribute_taxonomies();

foreach ( $attributes as $tax ) {
$name = wc_attribute_taxonomy_name( $tax->attribute_name );

add_action( $name . '_add_form_fields', 'add_attribute_url_meta_field' );
add_action( $name . '_edit_form_fields', 'edit_attribute_url_meta_field', 10 );
add_action( 'edit_' . $name, 'save_attribute_url' );
add_action( 'create_' . $name, 'save_attribute_url' );
}
}

/**
* Add term fields form // форма добавления полей терминов
*/
function add_attribute_url_meta_field() {

wp_nonce_field( basename( __FILE__ ), 'attrbute_url_meta_nonce' );
?>

<div class="form-field">
<label for="attribute_url"><?php _e( 'URL', 'domain' ); ?></label>
<input type="url" name="attribute_url" id="attribute_url" value="" />
</div>
<?php
}

/**
* Edit term fields form // Форма для редактирования полей терминов
*/
function edit_attribute_url_meta_field( $term ) {

$url = get_term_meta( $term->term_id, 'attribute_url', true );
wp_nonce_field( basename( __FILE__ ), 'attrbute_url_meta_nonce' );
?>
<tr class="form-field">
<th scope="row" valign="top"><label for="attribute_url"><?php _e( 'URL', 'domain' ); ?></label></th>
<td>
<input type="url" name="attribute_url" id="attribute_url" value="<?php echo esc_url( $url ); ?>" />
</td>
</tr>
<?php
}

/**
* Save term fields // сохраняем поля терминов
*/
function save_attribute_url( $term_id ) {
if ( ! isset( $_POST['attribute_url'] ) || ! wp_verify_nonce( $_POST['attrbute_url_meta_nonce'], basename( __FILE__ ) ) ) {
return;
}

$old_url = get_term_meta( $term_id, 'attribute_url', true );
$new_url = esc_url( $_POST['attribute_url'] );

if ( ! empty( $old_url ) && $new_url === '' ) {
delete_term_meta( $term_id, 'attribute_url' );
} else if ( $old_url !== $new_url ) {
update_term_meta( $term_id, 'attribute_url', $new_url, $old_url );
}
}

/**
* Show term URL // Показываем URL-адрес термина
*/
add_filter( 'woocommerce_attribute', 'make_product_atts_linkable', 10, 3 );
function make_product_atts_linkable( $text, $attribute, $values ) {
$new_values = array();
foreach ( $values as $value ) {

if ( $attribute['is_taxonomy'] ) {
$term = get_term_by( 'name', $value, $attribute['name'] );
$url = get_term_meta( $term->term_id, 'attribute_url', true );

if ( ! empty( $url ) ) {
$val = '<a href="' . esc_url( $url ) . '" title="' . esc_attr( $value ) . '">' . $value . '</a>';
array_push( $new_values, $val );
} else {
array_push( $new_values, $value );
}
} else {
$matched = preg_match_all( "/\[([^\]]+)\]\(([^)]+)\)/", $value, $matches );

if ( $matched && count( $matches ) == 3 ) {
$val = '<a href="' . esc_url( $matches[2][0] ) . '" title="' . esc_attr( $matches[1][0] ) . '">' . sanitize_text_field( $matches[1][0] ) . '</a>';
array_push( $new_values, $val );
} else {
array_push( $new_values, $value );
}
}
}

$text = implode( ', ', $new_values );

return $text;
}

 

 

 

 

Код можно отыскать и на ГитХабе.

 

 

 

Если что не  ясно, пишите в комментариях или …

 

 

 

Желаю удач в работах и прочем)

 

 

 

 

Создание… продвижение сайтов: студия ATs media запросто с WordPress

 

 

 

 


...вопросы в комментариях - помогу, в чём дюжу...
mihalica.ru !


Михаил ATs - владелец блога запросто с Вордпресс - в сети нтернет давным-давно...

...веб разработчик студии ATs media: помогу в создании, раскрутке, развитии и целенаправленном сопровождении твоего ресурса в сети... - заказы, вопросы... разработка...




Нажатия на кнопочки определяют Ваше высокое гражданское сознание
Удачи в работе и творчестве..!
Статьи по теме:


Поделитесь соображениями: Ваши мысли очень важны!

Внимание! Обязательные поля помечены *

  отныне доступен плагин: ats privacy policy ©