Запрашивает функцию в functions.php? - PullRequest
3 голосов
/ 07 ноября 2010

У меня есть код jQuery, который будет проверяться, когда пользователь находится в нижней части страницы. Это не проблема, хотя. Этот jQuery отправляет запрос AJAX, предоставляя некоторые подробности о том, что загружать, когда пользователь находится в нижней части страницы. На данный момент код выглядит примерно так:

$("<div>").load('?ajax=y&offset=something', function() {

    $(".empty-div").append($(this));

    setTimeout(function(){ console.log('after', $(document).height()); }, 0);
    setTimeout(function(){ console.log('after', $(window).height()); }, 0);


});

Моя главная проблема в том, что я не знаю, что запросить или как отправлять информацию в функцию PHP в functions.php. Например, в данный момент я использую функцию PHP (пока она не работает):

function get_posts_page() {


if(isset($_GET['offset'])) {
     echo"Hello!";
}

}

Я знаю, что в wordpress есть add_action и все такое, но я понятия не имею, что бы я применил в качестве действия к любой функции, чтобы заставить PHP получать данные, которые отправляет Javascript. Есть ли URL, где все функции анализируются или что-то? Спасибо за любую помощь заранее. Итак, как мне получить данные из Javascript в функцию PHP в functions.php, в моей директории темы?

Ответы [ 2 ]

3 голосов
/ 07 ноября 2010

Я только что снял видео, чтобы показать вам, как использовать запрос add_action в WordPress. Вы можете посмотреть его здесь .

Вот мой JavaScript

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.3/jquery.min.js"></script>
<script>

$('#branding img').click(function() {

  $.post('<?php bloginfo('siteurl') ?>/wp-admin/admin-ajax.php', {
    action: 'my_unique_action',
    offset: 5
  }, function(data) {
    $('#content').prepend('<p>' + data + '</p>');
  });

});


</script>

И php, который я использовал в functions.php

// Make sure it runs when the user is logged in,
// and when they are not.
add_action('wp_ajax_my_unique_action', 'get_offset');
add_action('wp_ajax_nopriv_my_unique_action', 'get_offset');

function get_offset() {
  if( isset($_POST['offset']) ) {
    echo 'Your ajax request was successful. Here was your offset: <strong>' . $_POST['offset'] . '</strong>';
  }

  die;
}

Ссылка: http://codex.wordpress.org/AJAX_in_Plugins

0 голосов
/ 07 ноября 2010

Вы пытаетесь вызвать функцию PHP из Javascript, правильно?

Вам понадобится немного логики на странице, которая вызывает get_posts_page(). Либо вы можете создать новую страницу getPostsPage.php?offset=, либо вы можете поместить некоторую логику в functions.php, что-то вроде

if(isset($_GET['function']) {
    switch($_GET['function']) {
        case 'get_posts_page':
            get_posts_page();
    }
}

Однако, первый подход рекомендуется; Вы не хотите, чтобы кто-то мог изменять параметр function и осуществлять злонамеренный доступ к deleteAllPosts().

Таким образом:

// getPostsPage.php
require PATH . 'functions.php';
get_posts_page(); //checks $_GET['offset']

И помните, что изящно произойдет сбой (не показывать сообщение об ошибке), если не установлено смещение или что-то еще.

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