Несколько циклов на одной странице - PullRequest
0 голосов
/ 09 марта 2012

Мне нужно 3 разных запроса на одной странице.

Когда я это делаю, я получаю сообщение об ошибке:

Невозможно переопределить функцию filter_where () (ранее объявленную в W: \ home \ zerk \ www \ wp- content \ themes \ news \ most_commented.php в строке 41

Вот мой код:

<div id="page-wrap">

    <h3>Most commented </h3>

    <div id="example-five">

        <ul class="nav">
            <li class="nav-one"><a href="#featured" class="current">Lat day</a></li>
            <li class="nav-two"><a href="#core">Lat week</a></li>
            <li class="nav-three"><a href="#jquerytuts">Lat month</a></li>
        </ul>

        <div class="list-wrap">

            <ul id="featured">

 <?php
  function filter_where($where = '') {
   $where .= " AND post_date > '" . date('Y-m-d', strtotime('-1 days')) . "'";
   return $where;
  }
  add_filter('posts_where', 'filter_where');
  query_posts('post_type=post&posts_per_page=5&orderby=comment_count&order=DESC');
  while (have_posts()): the_post(); ?>
  <li>
  <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php           the_title();     ?></a>
</li>
<?php
endwhile;
wp_reset_query();
?>

            </ul>

             <ul id="core" class="hide">
<?php
function filter_where($where = '') {
 $where .= " AND post_date > '" . date('Y-m-d', strtotime('-7 days')) . "'";
 return $where;
}
add_filter('posts_where', 'filter_where');
query_posts('post_type=post&posts_per_page=5&orderby=comment_count&order=DESC');
while (have_posts()): the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title();     ?></a>
</li>
  <?php
endwhile;
wp_reset_query();
?>
             </ul>

             <ul id="jquerytuts" class="hide">
<?php
function filter_where($where = '') {
 $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
 return $where;
}
add_filter('posts_where', 'filter_where');
query_posts('post_type=post&posts_per_page=5&orderby=comment_count&order=DESC');
while (have_posts()): the_post(); ?>
<li>
<a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title();     ?></a>
</li>
<?php
endwhile;
wp_reset_query();
?>
             </ul>



</div>

1 Ответ

2 голосов
/ 09 марта 2012

Проблема очень четко указана в сообщении об ошибке.

Невозможно повторно объявить filter_where ()

Невозможно повторно объявить функцию filter_where -попробуй это.Обратите внимание, что функциям даны уникальные имена.

  • filter_where
  • filter_where2
  • filter_where3

Это верно для всех PHP, вы можетеУ него не может быть больше одной функции с одним и тем же именем.

<div id="page-wrap">
    <h3>Most commented </h3>
    <div id="example-five">
        <ul clas="nav">
            <li class="nav-one"><a href="#featured" class="current">Lat day</a></li>
            <li class="nav-two"><a href="#core">Lat week</a></li>
            <li class="nav-three"><a href="#jquerytuts">Lat month</a></li>
        </ul>
    <div class="list-wrap">
        <ul id="featured">
            <?php
                function filter_where($where = '') {
            $where .= " AND post_date > '" . date('Y-m-d', strtotime('-1 days')) . "'";
                return $where;
            }
                add_filter('posts_where', 'filter_where');
                query_posts('post_type=post&posts_per_page=5&orderby=comment_count&order=DESC');
                while (have_posts()): the_post(); ?>
            <li>
                <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php           the_title();     ?></a>
            </li>
            <?php
                endwhile;
                wp_reset_query();
                ?>

        </ul>

        <ul id="core" class="hide">
            <?php
                function filter_where2($where = '') {
            $where .= " AND post_date > '" . date('Y-m-d', strtotime('-7 days')) . "'";
                return $where;
            }
                add_filter('posts_where', 'filter_where2');
                query_posts('post_type=post&posts_per_page=5&orderby=comment_count&order=DESC');
                while (have_posts()): the_post(); ?>
            <li>
                <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title();     ?></a>
            </li>
            <?php
                endwhile;
                wp_reset_query();
                ?>
        </ul>

        <ul id="jquerytuts" class="hide">
            <?php
                function filter_where3($where = '') {
            $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
                return $where;
            }
                add_filter('posts_where', 'filter_where3');
                query_posts('post_type=post&posts_per_page=5&orderby=comment_count&order=DESC');
                while (have_posts()): the_post(); ?>
            <li>
                <a href="<?php the_permalink(); ?>" title="<?php the_title(); ?>"><?php the_title();     ?></a>
            </li>
            <?php
                endwhile;
                wp_reset_query();
                ?>
        </ul>
    </div>

Тем не менее, в коде тоже много других проблем - я бы посоветовал прочитать базовое введение в PHP.

http://php.net/manual/en/tutorial.php

Вся идея функции заключается в инкапсуляции, то есть вы пишете код один раз - затем вызываете его, когда вам нужна эта функциональность.

http://www.w3schools.com/php/php_functions.asp

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