WordPress中的自定义字段PHP

问题描述 投票:0回答:1

我正在尝试PHP(我的经验非常有限)。我有一个使用PHP设置的自定义字段和一个名为GiveWP的WordPress插件。

自定义字段用于指定人们希望捐赠的位置以支持。然后我添加了PHP以将其添加到电子邮件标签中,以便管理员和捐赠者可以看到在该字段中输入的内容。问题是,代码与通知电子邮件中输入的内容不匹配。它只是说“找不到支持数据”。

这是代码 - 任何人都可以帮我找到错误的位置吗?

自定义字段的代码

/**
 * Add Custom Donation Form Fields
 *
 * @param $form_id
 */ 
function give_myprefix_custom_form_fields( $form_id ) {
    // Only display for forms with the ID "415";
    // Remove "If" statement to display on all forms
    // For a single form, use this instead:
    // if ( $form_id == 415) {
    $forms = array( 415 ); ?>
        <div id="give-support-wrap">
            <label class="give-label" for="give-support"><?php _e( 'What would you like to suppport?', 'give' ); ?>     <span class="give-tooltip icon icon-question" data-tooltip="<?php _e( 'What would you like your donation to support?', 'give' ) ?>"></span>
            </label>
            <select name="give-support">
            <option value="">Select...</option>
            <option value="T-Shirts/Sweatshirts/Hats">T-Shirts/Sweatshirts/Hats</option>
            <option value="Africa">Africa</option>
            <option value="Armenia">Armenia</option>
            <option value="Bolivia">Bolivia</option>
            <option value="Columbia">Columbia</option>
            <option value="Dominican Republic">Dominica Republic</option>
            <option value="Peru">Peru</option>
            <option value="No Preference">No Preference</option>
            </select>
        </div>
    <?php 
// endif; 
} 

add_action( 'give_after_donation_levels', 'give_myprefix_custom_form_fields', 10, 1 );

/**
 * Add Field to Payment Meta
 *
 * Store the custom field data custom post meta attached to the <code>give_payment</code> CPT.
 *
 * @param $payment_id
 * @param $payment_data
 *
 * @return mixed
 */
function myprefix123_give_donations_save_custom_fields( $payment_id, $payment_data ) {
      if ( isset( $_POST['give_support'] ) ) {
        $message = implode( "\n", array_map( 'sanitize_text_field', explode( "\n", $_POST['give_support'] ) ) );
        add_post_meta( $payment_id, 'give_support', $message );
    }
}

add_action( 'give_insert_payment', 'myprefix123_give_donations_save_custom_fields', 10, 2 );

/**
 * Show Data in Payment Details
 *
 * Show the custom field(s) on the payment details page in wp-admin
 *
 * @param $payment_meta
 * @param $user_info
 */
function give_myprefix_purchase_details( $payment_meta, $user_info ) {
    // Bounce out if no data for this transaction
    $give_support = get_post_meta( $payment_id, 'give_support', true );
        if ( $give_support ) : ?>
    <div class="support-data">
        <label><?php _e( 'support:', 'give' ); ?></label>
        <?php echo wpautop( $give_support ); ?>
    </div>
        <?php endif;
 } 

add_action( 'give_payment_personal_details_list', 'give_myprefix_purchase_details', 10, 2 );

电子邮件标签代码

/**
 * Adds a Custom "Support" Tag
 * @description: This function creates a custom Give email template tag
 *
 * @param $payment_id
 */
function my_custom_prefix_add_sample_support_tag( $payment_id ) {
    give_add_email_tag( 'support', 'This tag can be used to output the custom support field', 'my_custom_prefix_get_donation_support_data' );
}

add_action( 'give_add_email_tags', 'my_custom_prefix_add_sample_support_tag' );

/**
 * Get Donation Support Data 
 * 
 * @description Example function that returns Custom field data if present in payment_meta; the example used here is in conjunction with the Give documentation tutorials
 * @param $payment_id
 *
 * @return string|void
 */
function my_custom_prefix_get_donation_support_data( $payment_id ) {

    $payment_meta = give_get_payment_meta( $payment_id );
    $output       = __( 'No support data found.', 'give' );
    if ( isset( $payment_meta['support'] ) && ! empty( $payment_meta['support'] ) ) {
        $output = $payment_meta['support'];
    }

    return $output;
}

谢谢!

我需要帮助的页面:http://dev1.igniswebdesign.com/donate/

php wordpress
1个回答
0
投票

看起来give_get_payment_meta()没有返回数据。

尝试用此替换$payment_meta = give_get_payment_meta( $payment_id );

$payment_meta = esc_attr(get_post_meta($payment_id, 'give_support', true));
© www.soinside.com 2019 - 2024. All rights reserved.