Кнопка для выполнения функции PHP на странице заказа клиента woocommerce - PullRequest
0 голосов
/ 05 сентября 2018

Я пытаюсь создать кнопку, которая будет выполнять мой скрипт FPDF на странице заказов клиентов в woocommerce, чтобы клиенты могли создавать PDF-файлы на основе определенного заказа, рядом с которым находится кнопка.

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

Я застрял в том, как я могу добавить новую кнопку для выполнения функции в файле myaccount / orders.php. Я потратил большую часть последних двух дней, пытаясь найти решение, поэтому любая помощь будет очень признательна!

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

функция для вызова FPDF

function exFDPI () {
   require_once("/file/directory/FPDF.php");

}

Ответы [ 2 ]

0 голосов
/ 05 сентября 2018

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

Шаг 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;
}

Шаг 2: добавьте содержимое нашей формы в наш новый столбец

//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');

Шаг 3 Заключительный шаг: добавьте наше действие в WordPress

//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

проверенный код выше.

0 голосов
/ 05 сентября 2018

Вы можете передать параметр с помощью кнопки, а затем обработать запрос на 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' );

Не забудьте добавить return;

UPDATE

Добавить содержимое к кнопке, как @kashalo говорит в своем ответе.

    //Insert the content into the new column 
    function pdf_column_content($order)
    {
        ?>


    <div id="content">
    <form action="<?php esc_url( $_SERVER['REQUEST_URI'] ) ?>" method="post">
         <input type="hidden" name="order_id_for_pdf" value="<?php echo $order->get_order_number() ?>">
         <input type="submit" value="Downloads">
         </form>
    </div>

<?php 
}
add_action('woocommerce_my_account_my_orders_column_order-downloads', 'pdf_column_content');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...