Wie überprüfe ich, ob eine Kategorie eine übergeordnete Kategorie hat?
Lesezeit: 5 Minuten
Phat Toni
Ich versuche zu überprüfen, ob “categoryone” ein übergeordnetes Element hat. Ich weiß genau, dass ich überprüfen und sehen kann, dass es eine Kategorie namens categoryone gibt, aber nicht, wenn categoryone eine übergeordnete Kategorie hat. Ich habe versucht, so etwas wie den folgenden Code zu codieren.
$tid = term_exists('categoryone', 'category', 0);
$term_ids = [];
if ( $tid !== 0 && $tid !== null )
{
$term_ids[] = $tid['term_id'];
}
else
{
// If there is not a parent category!
$insert_term_id = wp_insert_term( 'categoryone', 'category' );
if ( ! is_wp_error )
$term_ids[] = $insert_term_id;
}
wp_set_post_categories( $insert_id, $term_ids );
Das Alpha
Sie können so etwas verwenden (Fügen Sie dies in Ihre functions.php Datei)
function category_has_parent($catid){
$category = get_category($catid);
if ($category->category_parent > 0){
return true;
}
return false;
}
Rufen Sie dies aus der Vorlage auf
if(category_has_parent($tid)) {
// it has a parent
}
Super wie du Code! Ist es möglich zu überprüfen, ob ‘categoryone’ Childe-Kategorien hat?
– Phat Toni
28. September 2013 um 9:27 Uhr
Nun, Sie können verwenden get_category_parents() (Schauen Sie sich den Link an, um die Argumente usw. zu lesen). Dies gibt eine Liste aller Eltern in hierarchischer Reihenfolge zurück. Wenn Sie in diesem Fall nur die unmittelbarste übergeordnete Kategorie wünschen, könnten Sie Folgendes tun:
Dadurch wird die erste übergeordnete Kategorie (die direkt über Ihrer aktuellen Kategorie) wiedergegeben.
Deutlich sein:
in get_category_parents()
– arg 1 ist die Kategorie-ID (ich habe gerade verwendet $cat willkürlich)
– arg 2 ist, wenn Sie möchten, dass wp einen Link zu jeder zurückgegebenen übergeordneten Kategorie hinzufügt
– arg 3 ist das Trennzeichen, das zum Trennen der zurückgegebenen Kategorien verwendet wird, falls vorhanden
in explode()
– arg 1 ist das Trennzeichen, nach dem gesucht werden muss, um die Zeichenfolge in einem Array zu trennen
– arg 2 ist die zu trennende Quellzeichenfolge
Viel Spaß beim Codieren!
Schön, Code… Kann man überprüfen, ob ‘categoryone’ Childe-Kategorien hat?
– Phat Toni
28. September 2013 um 9:25 Uhr
Verwenden Sie den folgenden Code, um Eltern und Kinder einer Kategorie zu überprüfen.
$term = get_term_by( 'slug', get_query_var( 'term' ), get_query_var( 'taxonomy' ) ); // get current term
$parent = get_term($term->parent, get_query_var('taxonomy') ); // get parent term
$children = get_term_children($term->term_id, get_query_var('taxonomy')); // get children
if(($parent->term_id!="" && sizeof($children)>0)) {
// has parent and child
}elseif(($parent->term_id!="") && (sizeof($children)==0)) {
// has parent, no child
}elseif(($parent->term_id=="") && (sizeof($children)>0)) {
// no parent, has child
}
Josh Bradley
@M Khalid Junaid
Um Ihre Antwort zu erweitern, habe ich anhand Ihres Codes überprüft, ob die Kategorie keine übergeordneten Elemente hat und ein Element der obersten Ebene in einer Kategorie- / Taxonomie-Hierarchie ist. Ich füge dies hinzu, weil ich danach gesucht habe, als ich über diesen Thread gestolpert bin, und vielleicht tut jemand anderes dasselbe.
<?php
$args = array(
'taxonomy' = 'categories'; // If using custom post types, type in the custom post type's name
);
$terms = get_terms( $args );
foreach ( $terms as $term ) {
$has_parent = $term->parent;
$name = $term->name;
// If it doesn't have parents...
if ( !$has_parent ) {
// ...then it's the top tier in a hierarchy!
echo "Tier 1:" $name . '<br />';
}
}
?>
Ausgabe
Ebene 1: Kategoriename
Stufe 1: Ein anderer Kategoriename
Stufe 1: Alle Top-Level-Kategorien
Marcos DiPaolo
$queried = $wp_query->get_queried_object();
if ($queried->category_parent) {
// category has parent
}
Bishwas Shrestha
Holen Sie sich zunächst alle Begriffe unter Ihrer Taxonomie „taxonomy_name“ und überprüfen Sie dann, ob jeder von ihnen übergeordnet ist oder nicht. Probieren Sie den folgenden Code aus
<?php
$service_terms= get_terms( array(
'taxonomy' => 'taxonomy_name'
) );
?>
<?php if(!empty($service_terms)) : ?>
<?php foreach($service_terms as $term) : ?>
<?php $has_parent = $term->parent; ?>
<?php if (!$has_parent): ?>
<!-- If this term is a parent then put your code here -->
<?php endif ?>
<?php endforeach ?>
<?php endif ?>
13892200cookie-checkWie überprüfe ich, ob eine Kategorie eine übergeordnete Kategorie hat?yes