Почему я не могу получить значение пользовательских полей WP или идентификатор сообщения через Ajax? - PullRequest
0 голосов
/ 22 сентября 2018

Я написал код, который генерирует ссылку на основе местоположения посетителя, и она отлично работала, но я обнаружил, что сгенерированный код кэшируется, так как я использую кэширование на всю страницу, поэтому я решил эту проблему, но могу использовать ajax длязагрузить эту ссылку.Я использовал приведенный ниже код, который отлично работал при получении некоторых необходимых мне переменных, таких как переменная местоположения, переменная домена ссылки и т. Д. Однако я не могу получить данные настраиваемого поля WooCommerce или даже идентификатор продукта, который он просто возвращает пустым.

Я использую этот код для получения настраиваемого поля, которое отлично работает при использовании непосредственно в функции, но не может заставить его работать в ajax

$uk_asin = get_post_meta(get_post()->ID, "wccaf_uk_asin", true );

Я использовал этот код в functions.php

add_action( 'woocommerce_before_add_to_cart_button', 'affiliate_link_ajax', 11);
function affiliate_link_ajax() {    
?>
<script>
jQuery(document).ready(function(){

             jQuery.ajax({
                url: "<?php echo admin_url('admin-ajax.php'); ?>",
                type: 'POST',
                data: {
                action: 'getmyfunctionform1'
                },
                dataType: 'html',
                success: function(response) {

                jQuery("#myResultsform1").html(response);

                }

        }); 
    });
</script> 
<!-- end Ajax call to getmyfunctionform1 smc 11-22-2013 -->

<div id="myResultsform1"></div>
<?php
}

и этот код в funnctions.php, а также

// Ajax Function to Load PHP Function myfunctionform1 smc 11/22/2013

add_action('wp_ajax_getmyfunctionform1', 'myfunctionform1');
add_action('wp_ajax_nopriv_getmyfunctionform1', 'myfunctionform1');

function myfunctionform1() { 
    $uk_asin = get_post_meta(get_post()->ID, "wccaf_uk_asin", true );
echo $uk_asin;
// Whatever php and or html you want outputed by the ajax call in template file

die(); } // important must use

// end Ajax Function to Load PHP Function myfunctionform1 smc 11/22/2013

Я был бы очень признателен, если бы ответ был простым, поскольку я все еще очень плохо знаком с кодированием

1 Ответ

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

Передайте свой идентификатор сообщения в ваш запрос AJAX:

data: {
    action: 'getmyfunctionform1',
    postId: <?php echo get_post()->ID; ?>
}

И затем используйте его в функции обратного вызова, чтобы получить мета-значение:

function myfunctionform1() { 
    $postId = filter_input( INPUT_POST, 'postId', FILTER_SANITIZE_NUMBER_INT );
    $uk_asin = get_post_meta( $postId, "wccaf_uk_asin", true );
    // etc.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...