Вопрос по ajax, jquery, function, wordpress – Как использовать WordPress функции в вызове AJAX

10

Я хотел бы знать, есть ли способ использовать функцию, как query_post () в вызове ajax?

Допустим, я звоню в файл _inc / ajax.php

Я хочу уметь использовать функции wordpress, но я не знаю почему. Может ли кто-нибудь помочь мне в этом?

Большое спасибо :)

Ваш Ответ

3   ответа
1

Вот пример для загрузки популярных сообщений с использованием ajax

function getPopularPosts()
{
    $popularpostdata = wpp_get_mostpopular_data();
    foreach($popularpostdata as $populardata)
        {
            $cur_id = $populardata->id;
            $cur_date = $populardata->post_date;
            $cur_date = date("F j, Y", strtotime($cur_date));
    ?>
    <article id="<?php echo $populardata->post_slug.'_mp';?>" data-attr-post-title="<?php echo $populardata->title; ?>" <?php post_class(); ?>>
      <p class="advt_disclosure"><?php echo advtdescloser(); ?></p>
      <?php 
        echo '<h6>'.getCategoryLink().'</h6>';
        $post_mp = get_post($cur_id);
      ?>
      <h1><?php echo $populardata->title;?></h1>
      <div class="entry-content">
        <div class="post-details"> <?php echo getAuthorData($post_mp->post_author,$cur_id,$populardata->title,$cur_date); ?> </div>
        <div class="collapsediv">
          <div class="row">
            <div class="col-sm-9 post_article">
              <?php
                    $content = $populardata->postcontent; //$content_post->post_content;
                    $content = apply_filters('the_content', $content);
                    $content = str_replace(']]>', ']]&gt;', $content);
                    echo $content;
                    wp_link_pages( array(
                        'before'      => '<div class="page-links"><span class="page-links-title">' . __( 'Pages:', 'twentyfifteen' ) . '</span>',
                        'after'       => '</div>',
                        'link_before' => '<span>',
                        'link_after'  => '</span>',
                        'pagelink'    => '<span class="screen-reader-text">' . __( 'Page', 'twentyfifteen' ) . ' </span>%',
                        'separator'   => '<span class="screen-reader-text">, </span>',
                    ) ); 
                ?>
              <p class="tags"> TAGS: <?php echo get_the_tag_list( '', __( ', ', 'twentyfifteen' ) )?></p>
            </div>
            <div class="col-sm-3 hot_deal"> <?php echo getAdvertisements(); ?> </div>
            <div class="col-sm-12 comment_section"> <?php echo getPostCommentsandSocialmediasharing($post_mp->post_author,$cur_id,$populardata->title); ?> </div>
          </div>
        </div>
      </div>
      <footer class="entry-footer">
        <?php //twentyfifteen_entry_meta(); ?>
        <?php //edit_post_link( __( 'Edit', 'twentyfifteen' ), '<span class="edit-link">', '</span>' ); ?>
      </footer>
      <div class="expander">
        <button class="expand" data-text-swap="Close article">expand article</button>
      </div>
    </article>
    <?php }
    exit();
}
add_action('wp_ajax_getPopularPosts', 'getPopularPosts');
add_action('wp_ajax_nopriv_getPopularPosts', 'getPopularPosts');`

And for call ajax you need to put some where in your themes footer.php

`$(".popular_posts").click(function(e) {
                    e.preventDefault();
                    if($('.popularposts').html().length==0)
                    {
                        $('.popularposts').html('<p class="text-center" style="margin-top:40px;"><img src="<?php echo get_home_url(); ?>/wp-content/themes/twentyfifteen/images/ajax-loader.gif"></p>');
                        $.ajax({
                            type: 'POST',
                            url: "<?php echo get_home_url(); ?>/wp-admin/admin-ajax.php",
                            data: {
                                action: 'getPopularPosts'
                            },
                            success: function( data ) {
                                $('.popularposts').html(data);
                            }
                        });
                    }
                });
29

который вы должны использовать вместе с полнымAjax API.

Вам нужно создать функцию jQuery.

Пример:

jQuery(document).ready(function($) {

    var data = {
        action: 'my_action',
        whatever: 1234
    };

    jQuery.post(ajaxurl, data, function(response) {
        alert('Got this from the server: ' + response);
    });
});

Ajaxurl var всегда доступен на стороне администратора. Если вы используете его на внешнем интерфейсе, вам нужно определить его.

Затем функция PHP, где вы можете запустить свой запрос. Функция PHP должна быть привязана кwp_ajax_your_action действие.

Пример:

add_action('wp_ajax_my_action', 'my_action_callback');

function my_action_callback() {
    global $wpdb; // this is how you get access to the database

    $whatever = intval( $_POST['whatever'] );

    $whatever += 10;

        echo $whatever;

    die(); // this is required to return a proper result
}

wp_ajax_your_action действие для администратора, если вам нужно использовать его на переднем конце, действие будетwp_ajax_nopriv_your_action

@Chris_O Спасибо за это, парень, это действительно помогает мне. +1 за это
Привет, я проверю это, расскажу, как это работает :) Thoma Biguères
0

http://wordpress.org/extend/plugins/json-api/, Он предоставляет интерфейс RESTful для наиболее распространенных функций WordPress, включаяquery_post и позволяет добавлять свои собственные действия.

Эй, спасибо, но возможно ли получить какой-нибудь простой текст с помощью этого API? Или это просто некоторые данные, которые мне нужно спроектировать с помощью JavaScript? Thoma Biguères

Похожие вопросы