is_tax()
云策文档标注
概述
is_tax() 是 WordPress 中的一个条件标签函数,用于判断当前查询是否为自定义分类法存档页面。它支持通过参数检查特定分类法或术语,并返回布尔值。
关键要点
- 函数用于检测自定义分类法存档页面,不包括内置分类法(如分类和标签)。
- 可选参数 $taxonomy 可指定分类法 slug 或数组,以检查特定分类法。
- 可选参数 $term 可指定术语 ID、名称、slug 或数组,以检查特定术语。
- 函数内部调用 WP_Query::is_tax(),需在查询运行后使用,否则返回 false。
- 相关函数包括 WP_Query::is_tax()、__() 和 _doing_it_wrong()。
代码示例
is_tax();
// 当任何自定义分类法存档页面显示时。
is_tax( 'channel' );
// 当分类法 'channel' 的存档页面显示时。
is_tax( 'channel', 'BBC1' );
// 当分类法 'channel' 的存档页面显示且术语为 'BBC1' 时。
// 检查多个分类法
if ( is_tax( array('channel', 'broadcaster') ) ) {
// 代码在此处
}
// 限制特定分类法存档页面的文章数量(在 functions.php 中)
add_action( 'pre_get_posts', function( $query) {
if ( $query->is_tax( 'NAME_OF_TAXONOMY' ) ) {
$query->set( 'posts_per_page', 6 );
}
} );
// 检查任何分类法存档页面(包括内置分类法)
if ( is_category() || is_tag() || is_tax() ){
// 是任何分类法存档页面
}
// 处理文章格式分类法
is_tax( 'post_format' );
// 当任何文章格式术语存档页面显示时。
is_tax( 'post_format', 'post-format-aside' );
// 当文章格式类型 'aside' 的存档页面显示时。注意事项
- is_tax() 仅适用于自定义分类法,不包含内置分类法(如 category 和 tag)。
- 使用前需确保查询已运行,否则会触发 _doing_it_wrong() 并返回 false。
- 参数 $term 可接受术语对象,如 is_tax( 'custom_taxonomy', $taxonomy_term_object )。
- 文章格式分类法的 slug 以 'post-format-' 为前缀,例如 'post-format-aside'。
原文内容
Determines whether the query is for an existing custom taxonomy archive page.
Description
If the $taxonomy parameter is specified, this function will additionally check if the query is for that specific $taxonomy.
If the $term parameter is specified in addition to the $taxonomy parameter, this function will additionally check if the query is for one of the terms specified.
For more information on this and similar theme functions, check out the Conditional Tags article in the Theme Developer Handbook.
Parameters
$taxonomystring|string[]optional-
Taxonomy slug or slugs to check against.
Default empty. $termint|string|int[]|string[]optional-
Term ID, name, slug, or array of such to check against. Default empty.
Source
function is_tax( $taxonomy = '', $term = '' ) {
global $wp_query;
if ( ! isset( $wp_query ) ) {
_doing_it_wrong( __FUNCTION__, __( 'Conditional query tags do not work before the query is run. Before then, they always return false.' ), '3.1.0' );
return false;
}
return $wp_query->is_tax( $taxonomy, $term );
}
Changelog
| Version | Description |
|---|---|
| 2.5.0 | Introduced. |
Skip to note 7 content
Codex
Examples
is_tax(); // When any custom taxonomy archive page is being displayed. is_tax( 'channel' ); // When the archive page for taxonomy of 'channel' is being displayed. is_tax( 'channel', 'BBC1' ); // When the archive page for taxonomy of 'channel' is being displayed // and the 'channel' taxonomy term is 'BBC1'.Skip to note 8 content
Jonm511
How to limit the number of posts that appear in a landing page for a specific taxonomy:
If you are making a custom archive landing page that is based on a taxonomy and NOT a category or tag you can place the following code in your
functions.phpfile:add_action( 'pre_get_posts', function( $query) { if ( $query->is_tax( 'NAME_OF_TAXONOMY' ) ) { // Replace with the name of the taxonomy you want to target $query->set( 'posts_per_page', 6 ); // change '6' to the number of posts you want to appear } } );Skip to note 9 content
junkes
To check for more than one taxonomy, you can use an array. That’s useful when you want to display some code only on those taxonomy pages.
if ( is_tax( array('channel', 'broadcaster') ) ) { // your code goes here }Skip to note 10 content
tdrayson
Check for any taxonomy archive
is_tax()only checks if the current query is for a custom taxonomy.This doesn’t include the default category and tag taxonomies. You can check for any taxonomy archive by using is_category() and is_tag() alongside the is_tax() function
if ( is_category() || is_tag() || is_tax() ){ // Is any taxonomy archive page }Skip to note 11 content
xrichard
The $term parameter also accepts term objects.
is_tax( 'custom_taxonomy', $taxonomy_term_object );Skip to note 12 content
Codex
Post Formats
The taxonomy slug for Post Formats differs from the Post Format slug. The
register_taxonomy()function appends apost-format-base to the Post Format slug. So, e.g. while the “Aside” Post Format type has a slug of aside, thepost_formattaxonomy term “Aside” has a slug ofpost-format-aside.// When the archive page for any Post Format term is being displayed. is_tax( 'post_format' ); // When the archive page for Post Format type 'aside' is being displayed. is_tax( 'post_format', 'post-format-aside' );