Получение значения атрибута продукта Woocommerce в хуке Quform

Я пытаюсь получить значение атрибута продукта продукта woocommerce (какое имя dwnfile).

Это значение является URL для передачи в подключенную функцию, которая будет заполнять форму перенаправления. Форма, которую я использую, горничная с Quform коммерческий плагин.

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

Это исходный код, который они дали мне:

function my_populate_wc_attribute($form)
{
$value = 'some value'; // Get the value from WooCommerce somehow

$form->setValue('iphorm_3_2', $value);
}
add_action('iphorm_pre_display_3', 'my_populate_wc_attribute');

Вот что я попробовал:

function my_populate_wc_attribute($form)
{
global $product;
$value = array_shift( wc_get_product_terms( $product->id, 'pa_dwnfile', array( 'fields' => 'names' ) ) );
$form->setValue('iphorm_3_2', $value);
}
add_action('iphorm_pre_display_3', 'my_populate_wc_attribute');

Но значение кажется пустым.

Любая помощь по этому вопросу, пожалуйста?

1

Решение

Обновить (в конце):

Проблема остается $product глобальный объект (который вы не попали в этот хук).

Вы должны попробовать вместо этого:

function my_populate_wc_attribute( $form ) {
global $post;
$term = wc_get_product_terms( $post->id, 'pa_nopeus', array( 'fields' => 'names' ) );
$value = current( $term );
$form->setValue('iphorm_3_2', $value);
}
add_action('iphorm_pre_display_3', 'my_populate_wc_attribute');

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Это должно работать.

Но это не лучший способ сделать это. Вам следует добавить настраиваемое поле на вкладке «Общие» настройки продукта, а не использовать атрибут продукта для получения значения URL.


ОБНОВИТЬ: Ваша главная проблема в том, что Ваша форма НЕ находится на странице вашего продукта, так что вы не можете получить ID сообщения (or the product ID),

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

Вот код для пользовательских полей:

// Add Fields
add_action( 'woocommerce_product_options_general_product_data', 'add_product_general_custom_field' );
function add_product_general_custom_field() {
global $post;

// Get the selected value
$value = get_post_meta( $post->ID, '_dwnfile', true );
if( empty( $value ) ) $value = '';

woocommerce_wp_text_input( array(
'id'            => 'dwnfile',
'label'         => __( 'Download link', 'woocommerce' ),
'placeholder'   => '',
'desc_tip'      => 'true',
'description'   => __( 'Add your download link …', 'woocommerce' ),
'value'         => $value, // Displaying the selected value
) );
}

// Save Fields
add_action( 'woocommerce_process_product_meta', 'save_product_general_custom_field' );
function save_product_general_custom_field( $post_id ){

if( empty( $_POST['dwnfile'] ) ) return;
update_post_meta( $post_id, '_dwnfile', esc_attr( $_POST['dwnfile'] ) );
}

Вы получите настраиваемое поле «Ссылка для скачивания» (в общих настройках продукта):

введите описание изображения здесь

Код помещается в файл function.php вашей активной дочерней темы (или темы) или также в любой файл плагина.

Форма должна быть на странице продукта, чтобы получить идентификатор продукта. если это не так, ничего не будет работать.

Поэтому вам лучше рассказать, что вы пытаетесь сделать.

Чтобы получить значение URL, вы будете использовать:

$value = get_post_meta( $post_id, '_dwnfile', true );

Или (если идентификатор продукта не определен):

$value = get_post_meta( get_the_id(), '_dwnfile', true );

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

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector