Получение идентификатора поста WordPress в функциях. php - PullRequest
0 голосов
/ 28 февраля 2020

Я использую форму JQuery в Wordpress, которая при отправке вызывает функцию из файла. php. Мне нужно иметь возможность доступа к идентификатору записи в этой функции (test_function).

(1) HTML код на моей странице php. Это форма, которая вызывает 'test_function'.

<form autocomplete="off" id="form-id" enctype="multipart/form-data" action="<?php echo admin_url('admin-ajax.php')?>" method="post">
<input type="text" name="coords" placeholder="Coordinates" value="Some Value"/><br>
<input type="hidden" name="action" value="test_function"/>
<input type="submit" value="SUBMIT"/>
</form>

(2) внешний JS файл, поставленный в мои функции. php

jQuery(document).ready(function() {
jQuery('#form-id').ajaxForm({
  success: function(response){
    console.log(response);
  },
  error: function(response){
    console.log(response);
  },
  resetForm:true
});
});

(3) test_function в функции. php

function test_function(){
    //do something here that needs the POST ID
}

add_action('wp_ajax_test_function', 'test_function');
add_action('wp_ajax_nopriv_test_function', 'test_function');

Я не уверен, как подойти к этому. Я попробовал все 3 метода ниже, но ни один не работает.

global $post; $post_id = $post->ID;

global $wp_query; $post_id = $wp_query->get_queried_object_id();

$url = 'http://' . $_SERVER[ 'HTTP_HOST' ] . $_SERVER[ 'REQUEST_URI' ];
$current_post_id = url_to_postid( $url );

1 Ответ

0 голосов
/ 28 февраля 2020

Надеюсь, это поможет вам.

function get_ajax_posts() {
    // Query Arguments
    $args = array(
        'post_type' => array('post'),
        'post_status' => array('publish'),
        'posts_per_page' => -1,
        'order' => 'DESC'
    );

    // The Query
    $ajaxposts = get_posts( $args ); // changed to get_posts from wp_query, because `get_posts` returns an array

    echo json_encode( $ajaxposts );

    exit; // exit ajax call(or it will return useless information to the response)
}

// Fire AJAX action for both logged in and non-logged in users
add_action('wp_ajax_get_ajax_posts', 'get_ajax_posts');
add_action('wp_ajax_nopriv_get_ajax_posts', 'get_ajax_posts');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...