[theme-reviewers] Feedback on use of query_posts please-Badidea?

Thomas from ThemeZee contact at themezee.com
Sat Sep 14 20:48:04 UTC 2013


Since query_posts() has some drawbacks, I have just tried to create a
custom page template which retrieves the latest blog posts with pagination
and WP_Query: http://pastebin.com/Jg60rcyH

I guess you should always use home.php first and only create a custom page
template to display blog posts if you need a second, different use case
(maybe home.php displays full content posts and template-blog.php displays
excerpt blog posts).


2013/9/14 Thomas from ThemeZee <contact at themezee.com>

> I would say that you can only have one query/loop on a template since
> there is only one $paged variable. I may be wrong with that but I can't
> think of any possibility to have two loops with pagination at one template.
>
> Therefore you can use archive-{post_type}.php for a query/loop of a custom
> post type with pagination, and home.php to display the loop of normal blog
> posts with pagination. I guess a query/loop on a custom page template which
> displays the latest blog posts with pagination is only possible with
> query_posts(), isn't it?
>
> Then you can use WP_Query to create a second (or more) loops on your
> archive-{post_type}.php or home.php without pagination.
>
>
>
> 2013/9/14 Chip Bennett <chip at chipbennett.net>
>
>> For future reference, I thought it might be helpful to write all of this
>> out in greater detail:
>>
>> http://www.chipbennett.net/2013/09/14/home-page-and-front-page-and-templates-oh-my/
>>
>>
>> On Sat, Sep 14, 2013 at 9:13 AM, Chip Bennett <chip at chipbennett.net>wrote:
>>
>>> Yeah, that's a different scenario altogether. :) What you're describing
>>> sounds like something that is actually a custom page template, with
>>> multiple queries/loops.
>>>
>>> If you can describe (in as much detail as possible) what you're trying
>>> to implement, I'm sure we can help you.
>>>
>>>
>>> On Sat, Sep 14, 2013 at 9:09 AM, Philip M. Hofer (Frumph) <
>>> philip at frumph.net> wrote:
>>>
>>>>   Cool, glad you got yours working, still need to figure out mine ;/
>>>> since my implementation isn’t like that.  (well the implementation I want
>>>> to do ;/)
>>>>
>>>> Multiple Templates with different post type loops that need pagination
>>>>
>>>>
>>>>
>>>>  *From:* Zulfikar Nore <zulfikarnore at live.com>
>>>> *Sent:* Saturday, September 14, 2013 5:41 AM
>>>> *To:* Theme Reviewers <theme-reviewers at lists.wordpress.org>
>>>> *Subject:* Re: [theme-reviewers] Feedback on use of query_posts
>>>> please-Badidea?
>>>>
>>>>  "ZGani - take note here: on the static page assigned to display the
>>>> blog
>>>>
>>>> posts index, any custom page template assignment is ignored. So, whether or
>>>> not you assign a custom template to that page, WordPress is going to use
>>>> either home.php or index.php to render that page."
>>>>
>>>> That is where I was getting stamped and didn't know why - totally makes
>>>> sense now with that explanation. Appreciated :)
>>>>
>>>> Given the way I intended to have the theme and what users have asked
>>>> for I think template-featured.php is way to go rather than front-page.php.
>>>>
>>>> Once again thanks Chip - I now have an implementation to take forward
>>>> for my future themes :)
>>>>
>>>> Zulf
>>>>  ------------------------------
>>>> Date: Sat, 14 Sep 2013 08:19:55 -0400
>>>> From: chip at chipbennett.net
>>>> To: theme-reviewers at lists.wordpress.org
>>>> Subject: Re: [theme-reviewers] Feedback on use of query_posts
>>>> please-Badidea?
>>>>
>>>>  Not really. In the OP, the custom page template was an intended
>>>> solution/implementation. The root issue was *display of the blog posts
>>>> index on a page other than the site front page*.
>>>>
>>>> The problem is that the intended solution/implementation was incorrect,
>>>> thereby causing the pagination problems. Basically, if you're using
>>>> template files the way WordPress expects, then WordPress properly handles
>>>> the $query for the given context - including pagination.
>>>>
>>>> Pagination is only an issue if a custom page template is used to
>>>> circumvent core WordPress handling of the blog posts index (i.e. a
>>>> template-blog.php). If you're using home.php, and have the user properly
>>>> configure "front page displays", "front page", and "posts page", then you
>>>> won't see any pagination issues.
>>>>
>>>> The issue arises when using template files other than the way WordPress
>>>> expects, such as using a custom page template to display the blog posts
>>>> index. In that circumstance - a custom page template - WordPress sees the
>>>> main $query as the static-page post, and applies the pagination to the
>>>> static-page post. Any secondary query, regardless of how it's added, will
>>>> have no impact on pagination - thus requiring a pagination work-around.
>>>>
>>>> But if you rename template-blog.php as home.php, and instruct the user
>>>> to configure settings -> reading properly, then WordPress recognizes the
>>>> static page assigned as the "posts page" as the blog posts index, uses the
>>>> home.php template to render it, recognizes $query as the blog posts index,
>>>> and applies pagination properly to the blog posts index.
>>>>
>>>>
>>>> On Sat, Sep 14, 2013 at 7:54 AM, Philip M. Hofer (Frumph) <
>>>> philip at frumph.net> wrote:
>>>>
>>>>   the template is what we were talking about but making pagination
>>>> work for it since it’s not a pregenerated loop
>>>>
>>>>
>>>>
>>>>  *From:* Chip Bennett <chip at chipbennett.net>
>>>> *Sent:* Saturday, September 14, 2013 4:50 AM
>>>>  *To:* Discussion list for WordPress theme reviewers.<theme-reviewers at lists.wordpress.org>
>>>> *Subject:* Re: [theme-reviewers] Feedback on use of query_posts
>>>> please-Badidea?
>>>>
>>>>   There are multiple options, including conditional statements inside
>>>> front-page.php and filtering front_page_template; but don't forget: you
>>>> don't *have* to use front-page.php at all.
>>>>
>>>> You can omit it, and package template-featured.php as a custom page
>>>> template. That way, the user has the control/option to use the featured
>>>> content template on the front page or on a different page, as well as the
>>>> control/option to use the featured content template or a default static
>>>> page on the site front page.
>>>>
>>>>
>>>> On Fri, Sep 13, 2013 at 11:06 PM, Philip M. Hofer (Frumph) <
>>>> philip at frumph.net> wrote:
>>>>
>>>>   The big question at this point being that front-page.php if included
>>>> with theme though overrides the index.php on all counts but I don’t want it
>>>> distributed that way ;/   how would you counter that?
>>>>
>>>>
>>>>
>>>>  *From:* Philip M. Hofer (Frumph) <philip at frumph.net>
>>>> *Sent:* Friday, September 13, 2013 8:04 PM
>>>>  *To:* Discussion list for WordPress theme reviewers.<theme-reviewers at lists.wordpress.org>
>>>> *Subject:* Re: [theme-reviewers] Feedback on use of query_posts
>>>> please-Badidea?
>>>>
>>>>    So front-page.php basically template redirects ‘overrides’ the page
>>>> that you set it to then?   and the blog loop uses the pre-get-parser at
>>>> that point on it?
>>>>
>>>> Damn, well yeah I was doing it wrong.  (sorry chip)
>>>>
>>>>
>>>>  *From:* Chip Bennett <chip at chipbennett.net>
>>>> *Sent:* Friday, September 13, 2013 7:48 PM
>>>> *To:* Discussion list for WordPress theme reviewers.<theme-reviewers at lists.wordpress.org>
>>>> *Subject:* Re: [theme-reviewers] Feedback on use of query_posts
>>>> please-Badidea?
>>>>
>>>>  You don't assign front-page.php to a static page, because
>>>> front-page.php isn't a custom page template. In fact, front-page.php should
>>>> *not* even have a "Template Name:" phpDoc header (which is what would allow
>>>> it to be assigned to a static page).
>>>>
>>>> The front-page.php template file is used contextually by WordPress, as
>>>> per the Template Hierarchy, based on settings -> reading -> "front page
>>>> displays" and "front page".
>>>>
>>>>
>>>> On Fri, Sep 13, 2013 at 10:42 PM, Philip M. Hofer (Frumph) <
>>>> philip at frumph.net> wrote:
>>>>
>>>>   (snicker) guess I’ am doing it wrong then, because that has never
>>>> worked for me to assign front-page.php to a static page it has always
>>>> overwritten the main
>>>>
>>>>
>>>>
>>>>
>>>>
>>>>  *From:* Zulfikar Nore <zulfikarnore at live.com>
>>>> *Sent:* Friday, September 13, 2013 7:32 PM
>>>> *To:* Theme Reviewers <theme-reviewers at lists.wordpress.org>
>>>>  *Subject:* Re: [theme-reviewers] Feedback on use of query_posts
>>>> please -Badidea?
>>>>
>>>>   Ah, progress....
>>>> Now I'm getting the hang of front-page.php :)
>>>>
>>>>  ------------------------------
>>>> Date: Fri, 13 Sep 2013 22:30:14 -0400
>>>> From: chip at chipbennett.net
>>>> To: theme-reviewers at lists.wordpress.org
>>>> Subject: Re: [theme-reviewers] Feedback on use of query_posts please
>>>> -Badidea?
>>>>
>>>> Both front-page.php and home.php are templates, defined in the Template
>>>> Hierarchy. What they are not, however, is custom static-page templates.
>>>> WordPress provides a core method to assign a static page to the front page
>>>> and to display the blog posts index, and the Template Hierarchy defines
>>>> which template files are used to render those contexts.
>>>>
>>>> To answer your specific question: when a user selects "static page" for
>>>> "front page displays, and then assigns static pages to the front page and
>>>> posts page, WordPress will use front-page.php to render the front page, and
>>>> home.php to render the posts page.
>>>>
>>>>
>>>> On Fri, Sep 13, 2013 at 10:27 PM, Zulfikar Nore <zulfikarnore at live.com>wrote:
>>>>
>>>>  Neither of which are templates.
>>>>
>>>> front-page.php will be picked up first so where will home.php fit in?
>>>>
>>>>
>>>>  ------------------------------
>>>> Date: Fri, 13 Sep 2013 22:24:49 -0400
>>>>
>>>> From: chip at chipbennett.net
>>>> To: theme-reviewers at lists.wordpress.org
>>>> Subject: Re: [theme-reviewers] Feedback on use of query_posts please
>>>> -Badidea?
>>>>
>>>> That other page is... (wait for it...)
>>>>
>>>> home.php
>>>>
>>>>
>>>> On Fri, Sep 13, 2013 at 10:23 PM, Philip M. Hofer (Frumph) <
>>>> philip at frumph.net> wrote:
>>>>
>>>>   Okay so you have it "HALF” right .
>>>>
>>>> the second part of that is to have the BLOG LOOP on another PAGE
>>>>
>>>> get it yet?
>>>>
>>>>
>>>>
>>>>
>>>>  *From:* Chip Bennett <chip at chipbennett.net>
>>>> *Sent:* Friday, September 13, 2013 7:14 PM
>>>>  *To:* Discussion list for WordPress theme reviewers.<theme-reviewers at lists.wordpress.org>
>>>> *Subject:* Re: [theme-reviewers] Feedback on use of query_posts please
>>>> -Badidea?
>>>>
>>>>   No, I think I have it exactly:
>>>>
>>>> "But I've had a lot of requests for options to hide certain sections
>>>> and one of them *was the blog feed on front page*."
>>>>
>>>>
>>>> On Fri, Sep 13, 2013 at 10:12 PM, Philip M. Hofer (Frumph) <
>>>> philip at frumph.net> wrote:
>>>>
>>>>   Yeah, you’re not getting it.
>>>>
>>>> It’s not for the front page
>>>>
>>>>
>>>>
>>>>  *From:* Chip Bennett <chip at chipbennett.net>
>>>> *Sent:* Friday, September 13, 2013 7:11 PM
>>>>  *To:* Discussion list for WordPress theme reviewers.<theme-reviewers at lists.wordpress.org>
>>>>  *Subject:* Re: [theme-reviewers] Feedback on use of query_posts
>>>> please - Badidea?
>>>>
>>>>   index.php is NOT the front page template, and should not be used as
>>>> such. It is the default fallback template.
>>>>
>>>> Use front-page.php for your front page template, and home.php for your
>>>> blog posts index template. Then all of your issues go away, magically. :)
>>>>
>>>>
>>>> On Fri, Sep 13, 2013 at 9:48 PM, Zulfikar Nore <zulfikarnore at live.com>wrote:
>>>>
>>>>  I'm using the index.php showing featured content at the top followed
>>>> by the blog feed - which works fine and I had planned to stick with that.
>>>> But I've had a lot of requests for options to hide certain sections and one
>>>> of them was the blog feed on front page.
>>>>
>>>> template.blog.php is to open the option to still have a page with the
>>>> blog feed on it when the user has opted to hide them on the front.
>>>>
>>>> Long story short - user hides posts on front but still wants a blog fed
>>>> page and this is my attempt to fill that need.
>>>>
>>>>  ------------------------------
>>>> Date: Fri, 13 Sep 2013 21:42:43 -0400
>>>> From: chip at chipbennett.net
>>>> To: theme-reviewers at lists.wordpress.org
>>>>
>>>> Subject: Re: [theme-reviewers] Feedback on use of query_posts please -
>>>> Bad idea?
>>>>
>>>>  Why do you need template-blog.php when there is home.php for exactly
>>>> that purpose?
>>>>
>>>>
>>>> On Fri, Sep 13, 2013 at 8:22 PM, Zulfikar Nore <zulfikarnore at live.com>wrote:
>>>>
>>>>  I've read around that using query_posts is bad but I've seen many a
>>>> themes using it and get away with it.
>>>>
>>>> My case is I'm trying to put together a template-blog.php for StrapVert
>>>> and this is what I've come up with so far:
>>>>
>>>>  add_filter('option_show_on_front', '__return_false');
>>>>   global $wp_query;
>>>>     query_posts(array(
>>>>   'paged' => $wp_query->get('paged'),
>>>>   'post__not_in' => get_option('sticky_posts'),
>>>>     ));
>>>>
>>>>   global $more; $more = 0;
>>>>     get_template_part('index-blog');
>>>>        $more = 1;
>>>> remove_filter('option_show_on_front', '__return_false');
>>>>
>>>>    wp_reset_query();
>>>> wp_reset_postdata();
>>>>
>>>> But before I add these changes to the theme and submit an update I'd
>>>> like some feedback on "How Really Bad" is query_posts and can I "get away"
>>>> with the above?
>>>>
>>>> Thanks in advance,
>>>> Zulf
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>>
>>>> _______________________________________________ theme-reviewers mailing
>>>> list theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>> ------------------------------
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>>
>>>> _______________________________________________ theme-reviewers mailing
>>>> list theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>>
>>>> _______________________________________________ theme-reviewers mailing
>>>> list theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>  ------------------------------
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>> ------------------------------
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>  ------------------------------
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>>
>>>> ------------------------------
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>>
>>>> _______________________________________________ theme-reviewers mailing
>>>> list theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>> ------------------------------
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>> _______________________________________________
>>>> theme-reviewers mailing list
>>>> theme-reviewers at lists.wordpress.org
>>>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>>>
>>>>
>>>
>>
>> _______________________________________________
>> theme-reviewers mailing list
>> theme-reviewers at lists.wordpress.org
>> http://lists.wordpress.org/mailman/listinfo/theme-reviewers
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.wordpress.org/pipermail/theme-reviewers/attachments/20130914/f4263988/attachment-0001.html>


More information about the theme-reviewers mailing list