• fruchtfliege

    (@fruchtfliege)


    hallo, ich verzweifele gerade total. da ich noch wordpress und auch php anfänger bin, scheitere ich an folgender aufgabe:

    in einer taxonomy „brand“ sind diverse marken als term angelegt, denen jeweils child terms (städte) untergeordnet sind, welche alphabetisch in einer liste ausgegeben werden sollen. da „get_child_themes“ meines wissens keine sortierung erlaubt, helfe ich an dieser stelle mit ksort nach. das funktioniert im moment auch problemlos, allerdings möchte ich das ganze um eine funktion erweitern:

    es sind ausländische städte hinzugekommen, weshalb ich nun für jedes land eine separate liste ausgeben möchte. die hirarchie kann demnach so aussehen: „brand –> land –> städte“. normalerweise kann man das ja jeweils mit einem eigenen query lösen, aber dadurch das die listen jeweils alphabetisch sortiert werden sollen, macht es die sache zu kompliziert für mich.

    eine lösung ohne child term „land“ dazwischen wäre auch möglich. der code kann also auch einfach nach einer zusätzlichen taxonomy „land“ filtern, so dass die aktuelle term hirarchy bestehen bleibt.

    wichtig zu erwähnen wäre zudem, dass verschiedene händler den städten zugeordnet sind und beim click auf den link der städte angezeigt werden (für den fall, dass jemand den aufgeblähten code nicht nachvollziehen kann)

    hier mein bisheriger code:

    <?php get_header(); ?>
    <?php
    $queried_object = get_queried_object();
    $current_id = $queried_object->term_id;
    $current_slug = $queried_object->slug;
    
    $args=array(
      'post_type' => 'distributors',
      'post_status' => 'publish',
      'showposts' => 1,
      'tax_query' => array(
            array(
                'taxonomy' => 'brand',
                'field' => 'slug',
                'terms' => $current_slug
            )
        )
    );
    $my_posts = get_posts($args);
    if( $my_posts ) {
    	$term_id = $current_id;
    	$taxonomyName = "brand";
    	$termchildren = get_term_children( $term_id, $taxonomyName );
    	$children = array();
    echo '<h3>Händlerliste Deutschland</h3>';
    echo '<div id="distributor-left">';
    echo '<ul>';
    foreach ($termchildren as $child) {
        $term = get_term_by( 'id', $child, $taxonomyName );
    	$term_link = get_term_link( $term, $taxonomyName );
    	$children[$term->name] = $term;
    }
    ksort($children);
    foreach ( $children as $child ) {
    $term = get_term_by( 'id', $child->term_id, $taxonomyName );
    	$term_link = get_term_link( $term, $taxonomyName );
    echo '<li><a href="'.$term_link.'?marke='.$current_slug.'">'.$term->name.'</a></li>';
    }
    echo '</ul>';
    echo '</div>';
    }	?>
    <?php echo '<div id="distributor-right">'; ?>
    <?php echo do_shortcode('[wpgmza id="2"]'); ?>
    <?php echo '</div>'; ?>
    
    <?php get_footer(); ?>

    danke im voraus!

Ansicht von 3 Antworten – 1 bis 3 (von insgesamt 3)
  • Moderator Torsten Landsiedel

    (@zodiac1978)

    Was ist jetzt die konkrete Frage?

    Gruß, Torsten

    Thread-Starter fruchtfliege

    (@fruchtfliege)

    es sind ausländische städte hinzugekommen, weshalb ich nun für jedes land eine separate liste ausgeben möchte.
    das war eigentlich mein anliegen. ursprünglich war die liste nur für deutsche händler gedacht. jetzt soll das ganze je nach land ausgegeben werden, womit ich schwierigkeiten hatte…

    allerdings habe ich eben eine lösung gefunden: ich habe für jede marke eine eigene taxonomie angelegt, also z.b. „marken – DE“, „marken – AT“ usw. der nachteil ist, dass ich in jedem land die marken als term neu anlegen musste, aber da es bislang nur 6 sind ist das vertretbar.

    der große vorteil an der methode ist, dass die händler wesentlich einfacher und übersichtlicher der marke bzw. stadt und land zugeordnet werden kann, da im backend jedes land und deren städte in einer eigenen liste angezeigt werden.

    ist vermutlich schwer nachzuvollziehen, aber fakt ist: es funktioniert jetzt wie es soll!

    Thread-Starter fruchtfliege

    (@fruchtfliege)

    ich habe für jede marke eine eigene taxonomie angelegt, also z.b. „marken – DE“, „marken – AT“ usw.

    das sollte heissen: „ich habe für jedes land eine eigene taxonomie angelegt, z.b. „marken – DE“, „marken – AT“ usw.

    p.s: sorry das ich oben code statt quote verwendet habe! kann man die einträge eigentlich irgendwie editieren? ich werde mit dem forum hier irgendwie nicht so recht warm.

Ansicht von 3 Antworten – 1 bis 3 (von insgesamt 3)
  • Das Thema „erweitern einer sortierten liste mit unterkategorien“ ist für neue Antworten geschlossen.