Как проверить, является ли сообщение произвольным типом сообщения?
6 ответ
- голосов
-
- 2011-01-11
Вот вы:
get_post_type()
,а затемif ( 'book' == get_post_type() ) ...
согласно Условные теги> Тип сообщения в Кодексе.Here you are:
get_post_type()
and thenif ( 'book' == get_post_type() ) ...
as per Conditional Tags > A Post Type in Codex.-
[`is_singular ()`] (http://codex.wordpress.org/Function_Reference/is_singular) немного компактнее [Условные теги> Одна страница,одно сообщение или вложение] (http://codex.wordpress.org/Conditional_Tags # A_Single_Page.2C_Single_Post_or_Attachment)[`is_singular()`](http://codex.wordpress.org/Function_Reference/is_singular) is bit more compact [Conditional Tags > A Single Page, Single Post or Attachment](http://codex.wordpress.org/Conditional_Tags#A_Single_Page.2C_Single_Post_or_Attachment)
- 26
- 2011-01-11
- Rarst
-
- 2012-06-12
if ( is_singular( 'book' ) ) { // conditional content/code }
Приведенное выше значение
true
при просмотре сообщения произвольного типа сообщения:book
.if ( is_singular( array( 'newspaper', 'book' ) ) ) { // conditional content/code }
Приведенное выше значение
true
при просмотре сообщения с настраиваемыми типами сообщений:newspaper
илиbook
.Эти и другие условные теги можно просмотреть здесь .
if ( is_singular( 'book' ) ) { // conditional content/code }
The above is
true
when viewing a post of the custom post type:book
.if ( is_singular( array( 'newspaper', 'book' ) ) ) { // conditional content/code }
The above is
true
when viewing a post of the custom post types:newspaper
orbook
.These and more conditional tags can be viewed here.
-
- 2011-07-06
Добавьте это в свой
functions.php
,и у вас будет функциональность внутри или вне цикла:function is_post_type($type){ global $wp_query; if($type == get_post_type($wp_query->post->ID)) return true; return false; }
Итак,теперь вы можете использовать следующее:
if (is_single() && is_post_type('post_type')){ // Work magic }
Add this to your
functions.php
, and you can have the functionality, inside or outside of the loop:function is_post_type($type){ global $wp_query; if($type == get_post_type($wp_query->post->ID)) return true; return false; }
So you can now use the following:
if (is_single() && is_post_type('post_type')){ // Work magic }
-
Спасибо,это очень полезно! Но так должно быть:if (is_single () &&is_post_type ('post_type')) {//творит чудеса } Закрывающая скобка отсутствовала .... Привет,ЭтельThank you, this is very useful! But it should be: if (is_single() && is_post_type('post_type')){ //work magic } The closing bracket was missing.... Many greetings, Ethel
-
Это перестало работать у кого-то еще?Я использовал это целую вечность,но внезапно это перестало работать для меня.Однако использование того же метода ** без ** глобального $ wp_query всегда работает: `if ('post-type'==get_post_type ()) {}`Has this stopped working for anyone else? I've used this for ages, but suddenly this stopped working for me. However, using the same method **without** global $wp_query always works: `if ( 'post-type' == get_post_type() ) {}`
- 0
- 2017-01-13
- turtledropbomb
-
is_post_type () обесценивается.is_post_type() is depreciated.
- 0
- 2017-12-21
- Lisa Cerilli
-
- 2013-04-15
Чтобы проверить,является ли сообщение любым настраиваемым типом сообщения,получите список всех не встроенных типов сообщений и проверьте,входит ли тип сообщения в этот список.
Как функция:
/** * Check if a post is a custom post type. * @param mixed $post Post object or ID * @return boolean */ function is_custom_post_type( $post = NULL ) { $all_custom_post_types = get_post_types( array ( '_builtin' => FALSE ) ); // there are no custom post types if ( empty ( $all_custom_post_types ) ) return FALSE; $custom_types = array_keys( $all_custom_post_types ); $current_post_type = get_post_type( $post ); // could not detect current type if ( ! $current_post_type ) return FALSE; return in_array( $current_post_type, $custom_types ); }
Использование:
if ( is_custom_post_type() ) print 'This is a custom post type!';
To test if a post is any custom post type, fetch the list of all not built-in post types and test if the post’s type is in that list.
As a function:
/** * Check if a post is a custom post type. * @param mixed $post Post object or ID * @return boolean */ function is_custom_post_type( $post = NULL ) { $all_custom_post_types = get_post_types( array ( '_builtin' => FALSE ) ); // there are no custom post types if ( empty ( $all_custom_post_types ) ) return FALSE; $custom_types = array_keys( $all_custom_post_types ); $current_post_type = get_post_type( $post ); // could not detect current type if ( ! $current_post_type ) return FALSE; return in_array( $current_post_type, $custom_types ); }
Usage:
if ( is_custom_post_type() ) print 'This is a custom post type!';
-
Это должен быть принятый ответ.This should be the accepted answer.
- 1
- 2018-03-21
- aalaap
-
- 2013-02-01
Если по какой-либо причине у вас уже есть доступ к глобальной переменной $post,вы можете просто использовать
if ($post->post_type == "your desired post type") { }
If for any reason you already have access to the global variable $post, you can simply use
if ($post->post_type == "your desired post type") { }
-
- 2014-01-30
Если вы хотите,чтобы для всех ваших пользовательских типов сообщений использовалась подстановочная проверка:
if( ! is_singular( array('page', 'attachment', 'post') ) ){ // echo 'Imma custom post type!'; }
Таким образом,вам не нужно знать название вашего персонализированного сообщения.Кроме того,код по-прежнему работает,даже если вы позже измените имя своего настраиваемого сообщения.
If you want a wild card check for all your custom post types:
if( ! is_singular( array('page', 'attachment', 'post') ) ){ // echo 'Imma custom post type!'; }
This way you don't need to know the name of your custom post. Also the code still work even if you change the name of your custom post later.
Я ищу способ проверить,является ли сообщение произвольным типом сообщения.Например,на боковой панели я могу вставить такой код:
Я хочу протестировать код только для настраиваемого типа публикации.