在woocommerce客户订单页面中执行PHP函数的按钮
我正在尝试制作一个按钮,它将在woocommerce的customers orders页面中执行我的FPDF脚本,以便客户可以根据按钮旁边的特定订单生成pdf 我已经添加了下面的my functions.php文件,为按钮创建了一个新列,并且添加了我希望按钮也执行的函数 我一直想知道如何在myaccount/orders.php文件中添加一个新按钮来执行该功能。在过去的两天里,我花了大部分时间试图找到一个解决方案——因此,任何帮助都将不胜感激在woocommerce客户订单页面中执行PHP函数的按钮,php,wordpress,woocommerce,Php,Wordpress,Woocommerce,我正在尝试制作一个按钮,它将在woocommerce的customers orders页面中执行我的FPDF脚本,以便客户可以根据按钮旁边的特定订单生成pdf 我已经添加了下面的my functions.php文件,为按钮创建了一个新列,并且添加了我希望按钮也执行的函数 我一直想知道如何在myaccount/orders.php文件中添加一个新按钮来执行该功能。在过去的两天里,我花了大部分时间试图找到一个解决方案——因此,任何帮助都将不胜感激 // END ENQUEUE PARENT ACTI
// END ENQUEUE PARENT ACTION
add_filter( 'woocommerce_account_orders_columns', 'add_custom_account_orders_column', 10, 1 );
function add_custom_account_orders_column( $columns ) {
$ordered_columns = array();
// Inserting a new column in a specific location
$ordered_columns['order-number'] = $columns['order-number'];
$ordered_columns['order-date'] = $columns['order-date'];
$ordered_columns['order-status'] = $columns['order-status'];
$ordered_columns['order-total'] = $columns['order-total'];
$ordered_columns['order-actions'] = $columns['order-actions'];
$ordered_columns['order-downloads'] = __( 'Downloads', 'woocommerce' ); // <== New column
return $ordered_columns;
}
您可以使用按钮传递参数,然后在
init
hook上处理请求
add_filter( 'woocommerce_account_orders_columns', 'add_custom_account_orders_column', 10, 1 );
function add_custom_account_orders_column( $columns ) {
$ordered_columns = array();
// Inserting a new column in a specific location
$ordered_columns['order-number'] = $columns['order-number'];
$ordered_columns['order-date'] = $columns['order-date'];
$ordered_columns['order-status'] = $columns['order-status'];
$ordered_columns['order-total'] = $columns['order-total'];
$ordered_columns['order-actions'] = $columns['order-actions'];
$ordered_columns['order-downloads'] = __('Downloads', 'woocommerce'); // <== New column
return $ordered_columns;
}
function exFDPI () {
if(isset($_POST['order_id_for_pdf'])) {
require_once("/file/directory/FPDF.php");
//
return;
}
else {
return;
}
}
add_action( 'init', 'exFDPI' );
首先,您缺少新专栏中的内容,下面是如何做到这一点: 步骤1:添加我们的专栏
add_filter('woocommerce_account_orders_columns', 'add_custom_account_orders_column', 10, 1);
function add_custom_account_orders_column($columns)
{
$ordered_columns = array();
// Inserting a new column in a specific location
$ordered_columns['order-number'] = $columns['order-number'];
$ordered_columns['order-date'] = $columns['order-date'];
$ordered_columns['order-status'] = $columns['order-status'];
$ordered_columns['order-total'] = $columns['order-total'];
$ordered_columns['order-actions'] = $columns['order-actions'];
$ordered_columns['order-downloads'] = __('Downloads', 'woocommerce'); // <== New column
return $ordered_columns;
}
//Insert the content into the new column
function pdf_column_content($order)
{
?>
<form action="<?php echo esc_url(admin_url('admin-post.php')); ?>" method="post">
<?php wp_nonce_field('pdf_temp');?> //Security Check
<input type="hidden" name="order_id" value="<?php echo $order->get_order_number() ?>">
<input type="hidden" name="action" value="pdf_temp">
<input type="submit" value="Submit">
</form>
<?php
}
add_action('woocommerce_my_account_my_orders_column_order-downloads', 'pdf_column_content');
//when the user click submit then we will call our template
function exFDPI()
{
$retrieved_nonce = $_REQUEST['_wpnonce'];
if (!wp_verify_nonce($retrieved_nonce, 'pdf_temp')) { //if passed the security check proceed
wp_die('Failed security check');
} else {
$order_id = $_POST['order_id'];
echo $order_id;
require_once "/file/directory/FPDF.php";
}
}
add_action('admin_post_nopriv_pdf_temp', 'exFDPI');
add_action('admin_post_pdf_temp', 'exFDPI');
当然,完整的代码应该进入主题functions.php
上面测试的代码 非常感谢您的回复!我试着把它放在functions.php中,它用Check更新的答案填充了一个表头。
//Insert the content into the new column
function pdf_column_content($order)
{
?>
<form action="<?php echo esc_url(admin_url('admin-post.php')); ?>" method="post">
<?php wp_nonce_field('pdf_temp');?> //Security Check
<input type="hidden" name="order_id" value="<?php echo $order->get_order_number() ?>">
<input type="hidden" name="action" value="pdf_temp">
<input type="submit" value="Submit">
</form>
<?php
}
add_action('woocommerce_my_account_my_orders_column_order-downloads', 'pdf_column_content');
//when the user click submit then we will call our template
function exFDPI()
{
$retrieved_nonce = $_REQUEST['_wpnonce'];
if (!wp_verify_nonce($retrieved_nonce, 'pdf_temp')) { //if passed the security check proceed
wp_die('Failed security check');
} else {
$order_id = $_POST['order_id'];
echo $order_id;
require_once "/file/directory/FPDF.php";
}
}
add_action('admin_post_nopriv_pdf_temp', 'exFDPI');
add_action('admin_post_pdf_temp', 'exFDPI');