在Woocommerce产品中动态填充自定义表单

时间:2019-02-23 01:47:10

标签: php wordpress forms woocommerce product

我有以下代码,该代码用按钮将基本的隐藏表单放在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 :(得分:2)

您的代码中有一些错误……请尝试以下操作(未经测试,没有任何保证)

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>';
}

现在应该可以更好地工作了。