Wie überprüfe ich, ob eine Kategorie eine übergeordnete Kategorie hat?

Lesezeit: 5 Minuten

Benutzeravatar von PhatToni
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 );

Der Benutzer-Avatar des Alphas
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
}

Überprüfen Sie Kinder

function has_Children($cat_id)
{
    $children = get_terms(
        'category',
        array( 'parent' => $cat_id, 'hide_empty' => false )
    );
    if ($children){
        return true;
    }
    return false
}

Rufen Sie dies aus der Vorlage auf

if(has_Children($tid)) {
    // it has children
}

  • Schöner Code, aber ist es möglich zu überprüfen, ob ‘categoryone’ Childe-Kategorien hat?

    – Phat Toni

    28. September 2013 um 9:32 Uhr

  • Ja, auf jeden Fall, halte durch.

    – Das Alpha

    28. September 2013 um 9:33 Uhr

Benutzeravatar von M Khalid Junaid
M Khalid Junaid

Du kannst den … benutzen get_category() um aktuelle Kategoriedetails abzurufen, indem term_id übergeben wird

$tid = term_exists('categoryone', 'category', 0);
$t_details=get_category($tid);
if(!empty($t_details->parent)){
echo $t_details->parent; // parent category id or $t_details->category_parent
}

get_category() gibt das Objekt wie unten aus der Referenzseite zurück

stdClass Object
(
    [term_id] => 85
    [name] => Category Name
    [slug] => category-name
    [term_group] => 0
    [term_taxonomy_id] => 85
    [taxonomy] => category
    How to check if a category has a parent category? => 
    [parent] => 70
    [count] => 0
    [cat_ID] => 85
    [category_count] => 0
    [category_description] => 
    [cat_name] => Category Name
    [category_nicename] => category-name
    [category_parent] => 70
)

BEARBEITEN Um die untergeordneten Kategorien zu erhalten, können Sie verwenden get_categories() indem Sie das Array arguments übergeben.

Elternteil

(Ganzzahl) Zeigt nur Kategorien an, die direkte Nachkommen (dh nur Kinder) der durch ihre ID identifizierten Kategorie sind

$args=array('parent'=>$tid);
$child_categories=get_categories($args);

  • 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:

<?php 
 $parent_cats = get_category_parents( $cat, false, ',' ); 
 $parent_cat = explode(",", $parent_cats); 
 echo $parent_cat[0];    
?>

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

}

Benutzeravatar von Josh Bradley
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

Benutzeravatar von Marcos Di Paolo
Marcos DiPaolo

$queried = $wp_query->get_queried_object();
    if ($queried->category_parent) {
        // category has parent
    }

Benutzeravatar von Bishwas Shrestha
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 ?>

1389220cookie-checkWie überprüfe ich, ob eine Kategorie eine übergeordnete Kategorie hat?

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy