"Mr Branding" is a blog based on RSS for everything related to website branding and website design, it collects its posts from many sites in order to facilitate the updating to the latest technology.
To suggest any source, please contact me: Taha.baba@consultant.com
Wednesday, September 30, 2015
WP_Query Arguments: Custom Fields
If you've been following this series, you'll have an understanding of how WP_Query
is structured and how you use it to write custom queries. To be able to define what WP_Query
fetches from the database, you need to know what arguments you can use to query data.
WP_Query
has a large number of possible arguments, which makes it extremely flexible. As you can use it to query just about anything held in your wp_posts
table, it has arguments for every permutation of query you might want to run on your content.
In this tutorial I'll look at the arguments for custom fields. But first, a quick recap on how you code arguments in WP_Query
.
A Recap on How Arguments Work in WP_Query
Before we start, let's have a quick recap on how arguments work in WP_Query
. When you code WP_Query
in your themes or plugins, you need to include four main elements:
- the arguments for the query, using parameters which will be covered in this tutorial
- the query itself
- the loop
- finishing off: closing
if
andwhile
tags and resetting post data
In practice this will look something like the following:
<?php $args = array( // Arguments for your query. ); // Custom query. $query = new WP_Query( $args ); // Check that we have query results. if ( $query->have_posts() ) { // Start looping over the query results. while ( $query->have_posts() ) { $query->the_post(); // Contents of the queried post results go here. } } // Restore original post data. wp_reset_postdata(); ?>
The arguments tell WordPress what data to fetch from the database and it's those that I'll cover here. So all we're focusing on here is the first part of the code:
$args = array( // Arguments for your query. );
As you can see, the arguments are contained in an array. You'll learn how to code them as you work through this tutorial.
Coding Your Arguments
There is a specific way to code the arguments in the array, which is as follows:
$args = array( 'parameter1' => 'value', 'parameter2' => 'value', 'parameter3' => 'value' );
You must enclose the parameters and their values in single quotation marks, use =>
between them, and separate them with a comma. If you get this wrong, WordPress may not add all of your arguments to the query or you may get a white screen.
Custom Field Parameters
Custom fields, also known as post metadata, can use a separate class called WP_Meta_Query
. This means that if you want to run a query just for post metadata, you can use either WP_Meta_Query
or WP_Query
(which accesses WP_Meta_Query
), while if you want to query for post metadata and other items such as post type, you use WP_Query
.
The WP_Meta_Query
class is covered in detail elsewhere in this series so I won't go into detail on that here, but the main difference between using that and WP_Query
is that WP_Query
lets you create some simple arguments without using nested arrays.
Parameters for Simple Custom Field Queries
The main parameters for using WP_Query
to query custom fields are as follows:
meta_key
(string): Custom field key.meta_value
(string): Custom field value.meta_value_num
(number): Custom field value.meta_compare
(string): Operator to test the'meta_value'
. Possible values are'='
,'!='
,'>'
,'>='
,'<'
,'<='
,'LIKE'
,'NOT LIKE'
,'IN'
,'NOT IN'
,'BETWEEN'
,'NOT BETWEEN'
,'NOT EXISTS'
,'REGEXP'
,'NOT REGEXP'
or'RLIKE'
. Default value is'='
.
Use these parameters for a simple custom field query. So for example to output posts which have a custom field with the key key1
(regardless of its value), you use this argument:
$args = array( 'meta_key' => 'key1' );
This would return all posts with a custom field with the key1
key, whatever the value.
If you wanted to specify a value you would add an extra argument for that:
$args = array( 'meta_key' => 'key1', 'meta_value' => 'value1' );
This would return all posts with a custom field with the key1
key and the value1
value for it.
Alternatively you could fetch all posts with a custom field with the value value1
, regardless of the key. This might be useful where you have multiple custom field keys with duplicate values:
$args = array( 'meta_value' => 'value1' );
So as you can see, you can query for just the custom field's key or value—you don't always have to specify both.
Using the meta_compare Argument
You may have noticed above that there are a lot of potential parameters for the meta_compare
argument, and their use may not always be immediately apparent. Let's take a look at the ones you might use the most:
=
: Equals. This is the default, so if you don't include ameta_compare
argument, this is what WP_Query will use.!+
: Is not equal to.>
: Greater than.>=
: Greater than or equal to.<
: Less than.<=
: Less than or equal to.LIKE
: This will ignore the case of the value you use, and you can also use it with wildcard characters to find values like the value you're looking for.NOT LIKE
: Works in a similar way to LIKE but queries the opposite!IN
: Use this with an array in the 'value' argument to find posts with one or more of the values in the array.BETWEEN
: Use with an array of two numerical values (specified in themeta_value
argument) to find posts with a custom field value between those values (but not equal to them).NOT BETWEEN
: Queries posts with custom field values outside an array of two numerical values specified by themeta_value
argument.
Let's take a look at some example uses of this argument.
First up, you can exclude custom field keys or values using the meta_compare
argument. So to fetch all posts except those with a custom field with the key1
key, you would use this:
$args = array( 'meta_key' => 'key1', 'meta_compare' => '!=' );
You could also use the 'NOT IN'
value for the meta_compare
argument, which can also be used with a string of multiple values:
$args = array( 'meta_key' => 'key1, key2', 'meta_compare' => 'NOT IN' );
This would query posts which don't have custom fields with the key1
or key2
values. If you want to be more specific, maybe querying for posts with one custom field and not another, you use a nested array, which we'll come to shortly.
The examples above use non-numerical values. You can use WP_Query
with custom fields that have numerical values, not only to fetch posts with a custom field with that value, but also to fetch ones with custom fields with higher or lower values. You might use this in a store for example, if looking for items above or below a given price.
To find posts with a custom field value above a given number, use something like this:
$args = array( 'meta_key' => 'numkey', 'meta_value' => '100', 'meta_compare' => '>' );
This would return all posts with a custom field with the numkey
key and a value of over 100
. If you wanted to query for values of 100 or over, you would use 'meta_compare' => '>='
.
You can also find posts whose custom fields have values between two numbers you specify using the BETWEEN
argument and an array:
$args = array( 'meta_key' => 'numkey', 'meta_value' => array ( '100', '200' ), 'meta_compare' => 'BETWEEN' );
This would find all posts with a value in the numkey
custom field between 100 and 200.
Nested Custom Field Queries
If you want to query for more than one custom field or use more than one operator, you can use a nested array.
These take the following structure:
$args = array( 'meta_query' => array( 'relation' => '', // Optional argument. array( // `meta_query` arguments go here. ) ) );
The way that you structure the 'meta_query'
argument in WP_Query
is exactly the same as how you do it using the WP_Meta_Query
class, which is covered in a later tutorial in this series, so I won't duplicate that here.
Since WordPress version 4.1 you can also use multiple levels of nested array to create ever more complex and precise queries. These look something like this:
$args = array( 'meta_query' => array( 'relation' => '', // Optional argument. array( 'relation' => '', array ( // First set of `meta_query` arguments go here. ), array ( // Second set of `meta_query` arguments go here. ) ) ) );
This lets you use different relations at different levels in your query, for example querying for posts with a value in one custom field key, or with both of two values in another custom field key. This is covered in more detail, with examples, in the tutorial on the WP_Meta_Query
class, which is part of this series.
Summary
Using the WP_Query
class to query your posts' metadata (or custom fields) gives you a lot of flexibility, with multiple potential arguments combined with a number of operators to help you query your database in exactly the way you want to.
If you only want to use post metadata arguments in your query (and not combine it with other arguments, for example for post types), you can also use the WP_Meta_Query
class, which is covered later in this series.
by Rachel McCollin via Tuts+ Code
How to Use Social Media Insights to Improve Your Marketing
Are you marketing on Twitter, Facebook or Pinterest? Do you know which type of posts your followers prefer? Social media analytics let you see who your followers are and what they like. In this article you’ll discover how to use your audience insights from Twitter, Facebook and Pinterest to improve your social media marketing. #1: Track Follower Preferences on Twitter […]
This post How to Use Social Media Insights to Improve Your Marketing first appeared on Social Media Examiner.
Social Media Examiner - Your Guide to the Social Media Jungle
by Katie Leimkuehler via Social Media Examiner
Fullscreen Video Opening Animation with CSS3
In this in-depth tutorial we want to show you how to create a similar video opening effect to the one seen on momentsapp.com. If you click the “Watch the video” button on the Moments App page, you will see a new image appearing on the photo stack which contains a video. The animation is a slight rotation of the frame and a subtle scaling of the video, which already starts to play. The whole wrapper expands to full screen without any play controls; just the closing cross will be shown. Once the video ends, or, if the user clicks on the closing cross, the video will simply disappear.
The post Fullscreen Video Opening Animation with CSS3 appeared first on jQuery Rain.
by Admin via jQuery Rain
Lorem : jQuery plugin for Random Lorem Ipsum Snippets
A jQuery plugin that generates random ‘lorem ipsum’ snippets on the fly. When designing/developing web interfaces you sometimes want to model content you don’t have (filler). Standardly, you copy snippets of the of an altered Latin text into your code.
The post Lorem : jQuery plugin for Random Lorem Ipsum Snippets appeared first on jQuery Rain.
by Admin via jQuery Rain
Actuate.js : jQuery wrapper for Animate.css
A jQuery wrapper for animate.css that makes it one line easy to start using css animations. The plugin includes a bunch of swaggy animations but can be used to initialise any animation you like.
The post Actuate.js : jQuery wrapper for Animate.css appeared first on jQuery Rain.
by Admin via jQuery Rain
Tuesday, September 29, 2015
62 Models
by via Awwwards - Sites of the day