Ваучеры на продукты WooCommerce PDF - Показать order_created_date? - PullRequest
0 голосов
/ 09 мая 2020

Я использую подключаемый модуль WooCommerce: Ваучеры на продукты WooCommerce PDF от Skyverge.

Я пытаюсь достичь sh того, что я хочу, чтобы в моем ваучере отображалась order_created_date.

В настоящее время функция плагина позволяет нам отображать только дату истечения срока действия ваучера.

Это фрагмент, который я нашел от них и пытаюсь настроить, чтобы это произошло:

/**
 * Add a custom voucher field.
 *
 * @param string[] $fields associative array of voucher fields
 * @return string[] updated fields
 */
function sv_wc_pdf_vouchers_voucher_fields( $fields ) {

    $fields['order_date'] = array(
        'data_type' => 'property',
        'label'     => __( 'Order Date', 'my-plugin' ),
    );

    return $fields;
}
add_filter( 'wc_pdf_product_vouchers_voucher_fields', 'sv_wc_pdf_vouchers_voucher_fields' );
/**
 * Return a custom value for a property field.
 *
 * @param mixed $value the field value
 * @return mixed the updated field value
 */
function sv_wc_pdf_vouchers_product_weight_value( $value, $voucher ) {

$order   = $voucher->get_order();
    return $order->get_date_created();
}
add_filter( 'wc_pdf_product_vouchers_get_product_weight', 'sv_wc_pdf_vouchers_product_weight_value', 10, 2 );
/**
 * Format a custom voucher field value for output.
 *
 * @param mixed $value_formatted the formatted field value
 * @return mixed the updated formatted value
 */
function sv_wc_pdf_vouchers_product_weight_value_formatted( $value_formatted ) {
    return wc_format_decimal( $value_formatted, 2 );
}
add_filter( 'wc_pdf_product_vouchers_get_product_weight_formatted', 'sv_wc_pdf_vouchers_product_weight_value_formatted' );

Вторая часть кода, в которой я пробовал

$order   = $voucher->get_order();
return $order->get_date_created();

Но тогда на ваучере ничего не отображается ... это означает, что он просто не получает дату заказа woocommerce. ..

Я знаю, что просто не использую правильные переменные, или просто неправильный код, надеюсь, кто-нибудь может мне помочь!

Большое спасибо.

1 Ответ

0 голосов
/ 09 мая 2020

Я действительно нашел обходной способ добиться того, что я ищу.

В основном я использую код, предоставленный SkyVerge:

/**
 * Add a custom voucher field.
 *
 * @param string[] $fields associative array of voucher fields
 * @return string[] updated fields
 */
function sv_wc_pdf_vouchers_voucher_fields( $fields ) {

    $fields['inc_children'] = array(
        'data_type' => 'user_input',
        'type'      => 'number',
        'label'     => __( 'Order Date', 'my-plugin' ),
    );

    return $fields;
}
add_filter( 'wc_pdf_product_vouchers_voucher_fields', 'sv_wc_pdf_vouchers_voucher_fields' );

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

Затем я скрываю это поле, используя стандартный прием CSS, а затем использую jQuery для вставки значения в это поле:

<script>
    jQuery(document).ready(function(){
        var months = ["January",
              "February",
              "March",
              "April",
              "May",
              "June",
              "July",
              "August",
              "September",
              "October",
              "November",
              "December"]
        var years = new Date().getFullYear();
        var date = new Date().getDate();
jQuery("input#cer-month").val(months[new Date().getMonth()]+' '+date+', '+years);
    });
</script>

Таким образом, поле автоматически заполнит текущий месяц, дату и год при загрузке страницы, чтобы я мог распечатать информацию из этого ввода на моем ваучере в формате pdf.

Надеюсь, это поможет кому-то, кто застрял в той же ситуации, что и Я сделал!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...