$ query_string в WordPress возвращает ноль? - PullRequest
0 голосов
/ 16 ноября 2010

Я пытаюсь создать систему разбивки на страницы и заставить ее работать на каждой странице. Я использую переменную $ query_string, которая предположительно содержит всю информацию о категории и т. Д.

Итак, яЯ делаю что-то вроде этого:

add_action('wp_ajax_and_action', 'get_posts_page');
add_action('wp_ajax_nopriv_and_action', 'get_posts_page');

function get_posts_page() {

$query_string = $_POST['query_string'];

global $wpdb;   


query_posts($query_string . '&posts_per_page=10&post_status=publish&offset='.$_POST['off']);    

Это в моем файле functions.php.Я глобализировал переменную $query_string в моем файле header.php.$_POST['query_string'] исходит из функции javascript (также в моем файле functions.php), которую я установил в wp_head (поэтому я предполагаю, что заголовок документа).Он отправляет кучу данных в функцию PHP:

$.post('<?php bloginfo('siteurl') ?>/wp-admin/admin-ajax.php', {
action: 'and_action',
off: offset+number,
pagenumber: page_number,
query_string: '<?php echo $query_string; ?>'
}, function(data) {

Однако, при дальнейшей проверке она показывает переменную query_string как ноль.Поэтому, когда я делаю: <?php echo $query_string ?> ничего не возвращается.Есть идеи, почему это может быть?Спасибо:)


Обновлено

Вот обновление

functions.php

Javascript:

   add_filter('wp_head', 'javascript_page');

function javascript_page() {
?>

    <script type="text/javascript">
    $(document).ready(function() {

        var number = 10;
        var offset = 0;
        var page_number = 2;
        var busy = false;

        /* Bind the scroll function to an event */
        $(window).bind('scroll', function(e) {


            /* If the scroll height plus the window height is more than the document height minus 10, continue */
            if($(window).scrollTop() + $(window).height() > $(document).height() - 10 && !busy) {


                busy = true;    

                /* Quick message so you know more stuff is loading */
                $('.loading-more').html('Click to load more posts..');

                $.post('<?php bloginfo('siteurl') ?>/wp-admin/admin-ajax.php', {
                    action: 'and_action',
                    off: offset+number,
                    pagenumber: page_number,
                    query_string: '<?php echo $query_string; ?>'
                    }, function(data) {


                        offset = offset+number; 

                        $('.empty-div').append('<div class="pages"><p>Welcome to <strong>Page '+page_number+'</strong></p></div><hr />'+data);


                        busy = false;
                        page_number += 1;


                });


            }

        });


        $('.loading-more').bind('click', function(e) {

                busy = true;    

                $('.loading-more').html('<em>Loading more posts..</em>')

                /* Quick message so you know more stuff is loading */               
                $.post('<?php bloginfo('siteurl') ?>/wp-admin/admin-ajax.php', {
                    action: 'and_action',
                    off: offset+number,
                    pagenumber: page_number,
                    query_string: '<?php echo $query_string; ?>'
                    }, function(data) {


                        offset = offset+number; 

                        $('.empty-div').append('<div class="pages"><p>Welcome to <strong>Page '+page_number+'</strong></p></div><hr />'+data);


                        busy = false;
                        page_number += 1;

                        $('.loading-more').html('Click to load more posts..');

                });


        });


    });
    </script>

ThePHP-функция:

add_action('wp_ajax_and_action', 'get_posts_page');
add_action('wp_ajax_nopriv_and_action', 'get_posts_page');

function get_posts_page() {

$query_string = $_POST['query_string'];

global $wpdb;   


query_posts($query_string . '&posts_per_page=10&post_status=publish&offset='.$_POST['off']);    

if ( have_posts() ) : while ( have_posts() ) : the_post(); 


    ?>
    <div id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
        <h1 class="entry-title"><a href="<?php the_permalink(); ?>" title="<?php printf( esc_attr__( 'Permalink to %s', 'twentyten' ), the_title_attribute( 'echo=0' ) ); ?>" rel="bookmark"><?php the_title(); ?></a></h1>
        <div class="entry-meta">

            <span class="%1$s">Posted on</span> <?php the_date('F jS'); ?>
            - <a class="comment-link" href="<?php the_permalink(); ?>#comment"><?php comments_number('Leave a Response!', '1 Response', '% Responses'); ?></a>
        </div><!-- .entry-meta -->
        <br />
        <a class="post-thumbnail-thing" href="<?php the_permalink(); ?>"><?php echo get_the_post_thumbnail(); ?></a>            
        <div class="entry-content">
            <?php the_content( __( '<span class="alignright">
            <span class="button-css">Continue Reading &rarr;</span> 
             </span>', 'twentyten' ) ); ?><br /><hr />
            <?php wp_link_pages( array( 'before' => '<div class="page-link">' . __( 'Pages:', 'twentyten' ), 'after' => '</div>' ) ); ?>
        </div><!-- .entry-content -->
    </div><!-- #post-## -->

    <?php comments_template( '', true ); ?>

   <?php        
   endwhile; endif;
    die();

    }

header.php

<?php global $query_string; ?>

Как я уже сказал, главная проблема в том, что $ query_string равен нулю :(

1 Ответ

1 голос
/ 17 ноября 2010

Ваша глобализация $query_string внутри вашего header.php файла, но вам нужно глобализировать его внутри вашей функции javascript_page() внутри functions.php

Вот видео, объясняющее, что я 'я делаю

function javascript_page() {
  global $query_string;
?>

<script type="text/javascript">
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...