Wie testen Sie, ob ein Beitrag ein benutzerdefinierter Post -Typ ist?
-
16-10-2019 - |
Frage
Ich suche nach einer Möglichkeit, zu testen, ob ein Beitrag ein benutzerdefinierter Post -Typ ist. Zum Beispiel in der Seitenleiste, die ich in einen solchen Code einfügen kann:
if ( is_single() ) {
// Code here
}
Ich möchte Code -Tests nur für einen benutzerdefinierten Beitragstyp.
Lösung
Hier sind Sie ja: get_post_type()
und dann if ( 'book' == get_post_type() ) ...
wie per Bedingte Tags> Ein Post -Typ in Codex.
Andere Tipps
if ( is_singular( 'book' ) ) {
// conditional content/code
}
Das obige ist true
Beim Anzeigen eines Beitrags des benutzerdefinierten Post -Typs: book
.
if ( is_singular( array( 'newspaper', 'book' ) ) ) {
// conditional content/code
}
Das obige ist true
Beim Anzeigen eines Beitrags der benutzerdefinierten Post -Typen: newspaper
oder book
.
Diese und bedingtere Tags kann hier angezeigt werden.
Fügen Sie dies Ihrem hinzu functions.php
, und Sie können die Funktionalität innerhalb oder außerhalb der Schleife haben:
function is_post_type($type){
global $wp_query;
if($type == get_post_type($wp_query->post->ID))
return true;
return false;
}
So können Sie jetzt Folgendes verwenden:
if (is_single() && is_post_type('post_type')){
// Work magic
}
Zu testen, ob ein Beitrag ist irgendein Benutzerdefinierte Post-Typ, holen Sie die Liste aller nicht eingebauten Post-Typen und testen Sie, ob sich der Posttyp in dieser Liste befindet.
Als eine Funktion:
/**
* 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 );
}
Verwendungszweck:
if ( is_custom_post_type() )
print 'This is a custom post type!';
Wenn Sie aus irgendeinem Grund bereits Zugriff auf die globale variable $ post haben, können Sie einfach verwenden
if ($post->post_type == "your desired post type") {
}
Wenn Sie einen Wild Card -Überprüfen Sie alle Ihre benutzerdefinierten Beitragstypen:
if( ! is_singular( array('page', 'attachment', 'post') ) ){
// echo 'Imma custom post type!';
}
Auf diese Weise müssen Sie den Namen Ihres benutzerdefinierten Beitrags nicht kennen. Auch der Code funktioniert immer noch, auch wenn Sie den Namen Ihres benutzerdefinierten Beitrags später ändern.