Динамическое заполнение пользовательской формы в продуктах Woocommerce - PullRequest
0 голосов
/ 23 февраля 2019

У меня есть следующий код, который помещает основную скрытую форму на страницу моего продукта woocommerce с кнопкой (это часть плагина, который я пытаюсь написать, который добавляет некоторые пользовательские параметры, введенные в бэкэнд. myplugin_option_name - это одиниз этих строк.)

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

add_action( 'woocommerce_single_product_summary', 'my_extra_button_on_product_page', 30 );

function my_extra_button_on_product_page() {
    global $product;

    $url_part = get_option('myplugin_option_name');
    $id = $product->get_id();
    $url = home_url;

    echo '<form action="https://example.com/transactions" method="POST">';
    echo '<input type="hidden" name="locationId" value="{$id}" />';
    echo '<input type="hidden" name="workflow" value="{$url_part}" />';
    echo '<input type="hidden" name="callbackUrl" value="{$url}" />';
    echo '<input type="submit" value= "Customise Product"></input>';
    echo '</form>';
}

Может быть, это что-то довольно простое, что я упускаю, потому что я 'В последние несколько дней я очень мало спал, пытаясь научить себя php, чтобы заставить это работать, поэтому я заранее извиняюсь, если это небольшая (глупая) ошибка.

1 Ответ

0 голосов
/ 23 февраля 2019

В вашем коде есть некоторые ошибки ... вместо этого попробуйте следующее (не проверено, без каких-либо гарантий) :

add_action( 'woocommerce_single_product_summary', 'my_extra_button_on_product_page', 35 );
function my_extra_button_on_product_page() {
    global $product;

    $product_id = $product->get_id();
    $home_url   = home_url(); // <== a mistake here
    $option_url = get_option('myplugin_option_name');

    // Display form and populated fields
    echo '<form action="https://example.com/api/transactions" method="POST">
    <input type="hidden" name="locationId" value="'.$product_id.'" />
    <input type="hidden" name="workflow" value="'.$option_url.'" />
    <input type="hidden" name="callbackUrl" value="'.$home_url.'" />
    <input type="submit" value= "'.__("Customize Product", "woocommerce").'"></input>
    </form>';
}

Теперь должно работать лучше.

...