search
HomeBackend DevelopmentPHP TutorialPowerful query_posts() function in wordpress_PHP tutorial

Powerful query_posts() function in wordpress_PHP tutorial

Jul 13, 2016 am 10:38 AM
querywordpresshostfunctionInquireofTalk about it

Today I will talk about the main query function of WordPress -query_posts(), because I have used this function many times in the theme I am making.

The query_posts() query function determines which posts appear in the WordPress main loop. Because of this, the query_posts function is only used to modify the home page loop (Loop), rather than generating secondary loops on the page. If you want to generate additional loops outside the main loop, you should create new independent WP_Query objects and use these objects to generate loops. Using query_posts on a loop outside of the main loop will cause the main loop to run skewed and may display content on the page that you don't want to see.

The query_posts() query function receives a large number of parameters, and the format is the same as the parameter format in the URL (for example, p=4 means the article with ID 4). Here are some examples of some commonly used syntax formats of the query_posts function.

1. Exclude certain categories from the blog homepage

Add the following code to the index.php file so that the articles displayed on the homepage can come from any category except category 3.

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. if (is_home()) {
  2. Query_posts("cat=-3");
  3. ?>

You can also exclude more categories.

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. if (is_home()) {
  2. Query_posts("cat=-1,-2,-3");
  3. ?>
2. Query the specified article

Use the following statement to retrieve a specified article:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. //Get the article with ID value 5
  2. query_posts('p=5');
  3. ?>

If you want to use the Read More function in the query statement, please set the global variable $more to 0.

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. //Get the page with ID value 5
  2. query_posts('p=5');
  3. global $more;
  4. //Initialize $more
  5. $more = 0;
  6. //Loop query results
  7. while (have_posts()) : the_post();
  8. the_content('Read the full post ?');
  9. endwhile;
  10. ?>
3. Retrieve the specified page

Use the following statement to retrieve a specified page:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('page_id=7'); //Get the page with page ID 7
  2. ?>

or

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('pagename=about');
  2. ?>

When retrieving a subpage, you need to provide the alias of the subpage and its parent page, separating the two with a slash. For example:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('pagename=parent/child');
  2. ?>

The above methods all use the form of query_posts($query_string) to call this function. Here is another method to pass parameter variables using an array.

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(array(
  2. 'cat' => 22,
  3. 'year' => $current_year,
  4. 'monthnum' => $current_month,
  5. 'order' => 'ASC',
  6. ));

Compared with the string method, the array form is more intuitive and less error-prone.

Below are some frequently used parameters. Some of them have been used by me, and some have not been used. Let’s just summarize them.

Classification parameters

Only show articles under specific categories.

  • cat - must use category ID
  • category_name
  • category_and —— must use category ID
  • category_in - must use category ID
  • category_not_in - must use category ID

Display a single category based on ID

Only display articles from a certain category ID (and subcategories under this category):

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('cat=4');

Display a single category based on category name

Only display articles from a certain category name:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('category_name=Staff Home');

Show multiple categories based on ID

Display articles from several specified category IDs:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('cat=2,6,17,38');

Exclude articles in a certain category

Displays all articles except articles in a certain category. Excluded category IDs are prefixed with a minus sign ('-').

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('cat=-3');

The above code deletes articles in the category with ID 3.

Handle multiple categories

Display articles belonging to multiple categories. The following code can display articles belonging to both category 2 and category 6:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(array('category__and' => array(2,6)));

If you want to display articles in category 2 or category 6, you can use the cat introduced above, or you can use the category_in function (note that articles in subcategories under the category will not be displayed here):

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(array('category__in' => array(2,6)));

You can exclude articles in multiple categories in the following way:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(array('category__not_in' => array(2,6)));

Tag parameters

Display articles under a specific tag.

  • tag —— must use tag ID
  • tag_id - must use tag ID
  • tag_and —— must use tag ID
  • tag_in - must use tag ID
  • tag_not_in - must use tag ID
  • tag_slug_and - must use tag ID
  • tag_slug_in - must use tag ID

Get articles in a certain tag

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('tag=cooking');

Get articles in any of several tags

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('tag=bread+baking+recipe');

Multiple tags

Display articles belonging to tags with IDs 37 and 47:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(array('tag__and' => array(37,47));

To display articles under tags with ID 37 or 47, you can use the tag parameter or tag_in:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(array('tag__in' => array(37,47));

The displayed article belongs to neither tag 37 nor tag 47:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(array('tag__not_in' => array(37,47));

tag_slug_in works almost the same as tag_slug_and, except that the matching aliases are different.

Author parameters

You can also select articles based on their authors.

  • author=3
  • author=-3 ——Exclude articles published by authors with ID 3
  • author_name=Harriet

Note: author_name operates on the user_nicename field, while author operates on the author id field.

Display all pages published by the author with ID 1, arrange the pages in title order, and there is no pinned article above the page list:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('caller_get_posts=1&author=1&post_type=page&post_status=publish&orderby=title&order=ASC');

Article & page parameters

Retrieve a single article or page.

  • ‘p’ => 27 - Display the article by article ID
  • ‘name’ => ‘about-my-life’ —— query for a certain article, the query contains the article alias
  • ‘page_id’ => 7 —— Query for the page with ID 7
  • ‘pagename’ => ‘about’ —— Note that this is not the page title, but the page path
  • Use ‘posts_per_page’ => 1 – use ‘posts_per_page’ => 3 to display 3 articles. Use 'posts_per_page' => -1 to display all posts
  • ‘showposts’ => 1 – use ‘showposts’ => 3 to display 3 posts. Use 'showposts' => -1 to display all posts. Deprecated.
  • ‘post__in’ => array(5,12,2,14,7) ——Specify the article ID you want to retrieve
  • ‘post__not_in’ => array(6,2,8) ——Exclude article IDs that you do not want to retrieve
  • ‘post_type’ => ‘page’ ——Return page; default value is post; available values ​​include any, attachment, page, post or revision. any retrieves all page types except revisions.
  • ‘post_status’ => ‘publish’ – Returns the published page. Available values ​​also include pending, draft, future, private, trash. For information about inherit, see get_children. The trash status was added in WordPress 2.9.
  • ‘post_parent’ => 93 - Returns the subpages of page 93.

Pinned article parameters

The pinned article feature was introduced in WordPress 2.7. In the query, the article set as "top" will be displayed before other articles, unless the article has been excluded by the caller_get_posts=1 parameter.

  • array(‘post__in’=>get_option(‘sticky_posts’)) —— Returns an array of all sticky posts
  • caller_get_posts=1 - Exclude pinned articles above the returned articles, but when returning the post list, place the pinned articles in the list in natural order.

Return to the first pinned article

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. $sticky=get_option('sticky_posts') ;
  2. query_posts('p=' . $sticky[0]);

or

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. $args = array(
  2. 'posts_per_page' => 1,
  3. 'post__in' => get_option('sticky_posts'),
  4. 'caller_get_posts' => 1
  5. );
  6. query_posts($args);

Note: The second method can only return the latest pinned article; if there is no pinned article currently, return the latest published article.

Return to the first pinned article; if there is none, no content will be returned

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. $sticky = get_option('sticky_posts');
  2. $args = array(
  3. 'posts_per_page' => 1,
  4. 'post__in' => $sticky,
  5. 'caller_get_posts' => 1
  6. );
  7. query_posts($args);
  8. if($sticky[0]) {
  9. // insert here your stuff...
  10. }

Exclude all pinned articles from the query

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(array("post__not_in" =>get_option("sticky_posts")));

Returns all articles under a certain category, but does not display pinned articles above the article list. All articles set to "pinned" are displayed in normal order (such as date order)

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('caller_get_posts=1&posts_per_page=3&cat=6');

Return to all articles under a certain category, do not display pinned articles at all, and retain paging

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. $paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
  2. $sticky=get_option('sticky_posts');
  3. $args=array(
  4. 'cat'=>3,
  5. 'caller_get_posts'=>1,
  6. 'post__not_in' => $sticky,
  7. 'paged'=>$paged,
  8. );
  9. query_posts($args);
  10. ?>

Time parameter

Search for articles published within a specific time period.

  • hour= -hour (hour, - ranges from 0 to 23)
  • minute= – minute (minute, - range from 0 to 60)
  • second= – second (seconds, - ranges from 0 to 60)
  • day= – day of the month (day, - ranging from 1 to 31)
  • monthnum= – month number (month, - range from 1 to 12)
  • year= – 4 digit year (year, such as 2009)
  • w= – week of the year (week of the year, - ranging from 0 to 53), use the MySQL WEEK command Mode=1 command

Return to recently published articles

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. $today = getdate();
  2. query_posts('year=' .$today["year"] .'&monthnum=' .$today["mon"] .'&day=' .$today["mday"] );

Return to the article published on December 20th

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(monthnum=12&day=20' );

Return to articles published between March 1st and March 15th, 2009

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. //based on Austin Matzko's code from wp-hackers email list
  2. function filter_where($where = '') {
  3. //posts for March 1 to March 15, 2009
  4. $where .= " AND post_date >= '2009-03-01' AND post_date
  5. Return $where;
  6. add_filter('posts_where', 'filter_where');
  7. query_posts($query_string);
  8. ?>

Return to articles published in the last 30 days

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. //based on Austin Matzko's code from wp-hackers email list
  2. function filter_where($where = '') {
  3. //posts in the last 30 days
  4. $where .= " AND post_date > '" . date('Y-m-d', strtotime('-30 days')) . "'";
  5. Return $where;
  6. add_filter('posts_where', 'filter_where');
  7. query_posts($query_string);
  8. ?>

Return to articles published in the past 30 days to the past 60 days

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. //based on Austin Matzko's code from wp-hackers email list
  2. function filter_where($where = '') {
  3. //posts 30 to 60 days old
  4. $where .= " AND post_date >= '" . date('Y-m-d', strtotime('-60 days')) . "'" . " AND post_date
  5. Return $where;
  6. add_filter('posts_where', 'filter_where');
  7. query_posts($query_string);
  8. ?>

Pagination parameters

  • paged=2 - Displays articles that appear on the second page after clicking the "Older Posts" link
  • posts_per_page=10 - The number of posts displayed on each page; if the value is -1, all posts will be displayed.
  • order=ASC - displays articles in chronological order, if the value is DESC, displays articles in reverse chronological order (default)

offset parameter

Through the offset parameter, you can remove or ignore one or more initial articles in the query set under normal circumstances.

The following shows the 5 posts following the most recent post:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('posts_per_page=5&offset=1');

Sorting parameters

  • orderby=author
  • orderby=date
  • orderby=category - Note: This parameter cannot be used in WordPress 2.8 and may have been deprecated
  • orderby=title
  • orderby=modified
  • orderby=menu_order
  • orderby=parent
  • orderby=ID
  • orderby=rand
  • orderby=meta_value - meta_key=some value statement should also appear in query parameters
  • orderby=none – no order —— (new in WP 2.8)
  • orderby=comment_count ——(new in WP 2.9)

Order parameters

Decide whether to sort in ascending or descending orderSort parameter

  • order=ASC - ascending order, from lowest value to highest value
  • order=DESC - Descending order, from highest value to lowest value

Custom field parameters

Retrieve articles (or pages) based on custom keywords or values.

  • meta_key=
  • metavalue=
  • meta_compare= - operator used to test metavalue=, the default value is '=', other possible values ​​include '!=', '>', '>=', '

Return articles with the keyword 'color' and the value 'blue':

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('meta_key=color&metavalue=blue');

Return articles with the custom field keyword 'color', regardless of the custom field value:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('meta_key=color');

Return articles with custom field value 'color', regardless of keyword:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('metavalue=color');

Return pages where the custom field value is 'green', regardless of the custom field keyword:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('post_type=page&metavalue=green');

Return articles and pages whose custom keyword is 'color' and whose custom field value is not 'blue':

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('post_type=any&meta_key=color&meta_compare=!=&metavalue=blue');

Returns articles whose custom field keyword is 'miles' and the custom field value is less than or equal to 22. Note that a field value of 99 will be considered greater than a field value of 100 because the data is stored as a string rather than a number.

query_posts(&#39;meta_key=miles&meta_compare=<=&metavalue=22&#39;);

Joint parameters

As you may have seen from some of the examples above, you can use the & symbol to connect different parameters, such as:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. uery_posts('cat=3&year=2004');

Display articles on the homepage published in the current month and belonging to category 13:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. if (is_home()) {
  2. query_posts($query_string . '&cat=13&monthnum=' . date('n',current_time('timestamp')));
  3. }

In WP 2.3, the following parameter union returns two articles that belong to both category 1 and category 3, in descending order by article title:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts(array('category__and'=>array(1,3),'posts_per_page'=>2,'orderby'=>title,'order'=>DESC));

In WP 2.3 and WP 2.5, the following parameter combination should return articles belonging to category 1 with the "apples" tag:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('cat=1&tag=apples');

But due to a bug, the code failed to show normal results. There is a solution: use the + sign to find multiple tags:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('cat=1&tag=apples+apples');

This shows the results we want to show.

Usage Tips

The "Maximum blog pages to display" parameter in Settings > Reading will affect your query results. To override the setting in Settings > Reading, you need to add the 'posts_per_page' parameter to the tag. For example:

Php code Powerful query_posts() function in wordpress_PHP tutorial
  1. query_posts('category_name=The Category Name&posts_per_page=-1'); //returns ALL from the category

Note: The query_posts function will rewrite and replace the main query of the page. As a precaution, please do not use query_posts for other purposes.

Source: http://www.zuluo.net/2012/2012-01/wordpress-query_posts.html

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/735067.htmlTechArticleToday I will talk about the main query function of WordPress - query_posts(), because it is used many times in the theme I am making. this function. The query_posts() query function determines which articles appear in Wo...
Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
What is the full form of PHP?What is the full form of PHP?Apr 28, 2025 pm 04:58 PM

The article discusses PHP, detailing its full form, main uses in web development, comparison with Python and Java, and its ease of learning for beginners.

How does PHP handle form data?How does PHP handle form data?Apr 28, 2025 pm 04:57 PM

PHP handles form data using $\_POST and $\_GET superglobals, with security ensured through validation, sanitization, and secure database interactions.

What is the difference between PHP and ASP.NET?What is the difference between PHP and ASP.NET?Apr 28, 2025 pm 04:56 PM

The article compares PHP and ASP.NET, focusing on their suitability for large-scale web applications, performance differences, and security features. Both are viable for large projects, but PHP is open-source and platform-independent, while ASP.NET,

Is PHP a case-sensitive language?Is PHP a case-sensitive language?Apr 28, 2025 pm 04:55 PM

PHP's case sensitivity varies: functions are insensitive, while variables and classes are sensitive. Best practices include consistent naming and using case-insensitive functions for comparisons.

How do you redirect a page in PHP?How do you redirect a page in PHP?Apr 28, 2025 pm 04:54 PM

The article discusses various methods for page redirection in PHP, focusing on the header() function and addressing common issues like "headers already sent" errors.

Explain type hinting in PHPExplain type hinting in PHPApr 28, 2025 pm 04:52 PM

Article discusses type hinting in PHP, a feature for specifying expected data types in functions. Main issue is improving code quality and readability through type enforcement.

What is PDO in PHP?What is PDO in PHP?Apr 28, 2025 pm 04:51 PM

The article discusses PHP Data Objects (PDO), an extension for database access in PHP. It highlights PDO's role in enhancing security through prepared statements and its benefits over MySQLi, including database abstraction and better error handling.

How to create API in PHP?How to create API in PHP?Apr 28, 2025 pm 04:50 PM

Article discusses creating and securing PHP APIs, detailing steps from endpoint definition to performance optimization using frameworks like Laravel and best security practices.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

PhpStorm Mac version

PhpStorm Mac version

The latest (2018.2.1) professional PHP integrated development tool

SecLists

SecLists

SecLists is the ultimate security tester's companion. It is a collection of various types of lists that are frequently used during security assessments, all in one place. SecLists helps make security testing more efficient and productive by conveniently providing all the lists a security tester might need. List types include usernames, passwords, URLs, fuzzing payloads, sensitive data patterns, web shells, and more. The tester can simply pull this repository onto a new test machine and he will have access to every type of list he needs.

SublimeText3 English version

SublimeText3 English version

Recommended: Win version, supports code prompts!