List Kategorien für den Autor: list_categories function in list_authors function

Ich versuche eine “Mitwirkende” -Seite zu erstellen, auf der eine Liste der Autoren und der Kategorien, in denen sie veröffentlicht wurden, aufgeführt ist.

Ich kann diesen Code für einen einzelnen Autor auf einer einzelnen Post-Seite verwenden:

 get_the_author_meta('id'), 'showposts'=>-1, 'caller_get_posts'=>1 ); $author_posts = get_posts($args); if( $author_posts ) { foreach ($author_posts as $author_post ) { foreach(get_the_category($author_post->ID) as $category) { $cat_array[$category->term_id] = $category->term_id; } } } $cat_ids = implode(',', $cat_array); $output = strtr( wp_list_categories( 'include='.$cat_ids.'&title_li=&style=none&echo=0' ), array( '
' => ' / ' ) ); echo preg_replace( '@\s/\s\n$@', '', $output ); ?>

Aber wenn ich versuche, dieses Bit in meine Liste Autoren-function (so dass jeder Autor in der Liste ihre jeweiligen Kategorien angezeigt hat) zu stecken Die Liste der Kategorien zeigt am oberen Rand der Seite (nicht in der div, wo ich den Code) und in der div, wo es angezeigt werden soll, heißt es einfach “array”. Ich denke, das ist eine Frage der Syntax, da ich eine Art PHP-Neuling bin.

Hier ist die Liste Autoren function:

 //My List Authors Function function my_list_authors($args = '') { global $wpdb; global $wp_query; $author = get_query_var('author'); function authorCats() { $categories = $wpdb->get_results(" SELECT DISTINCT(terms.term_id) as ID, terms.name, terms.slug, tax.description FROM $wpdb->posts as posts LEFT JOIN $wpdb->term_relationships as relationships ON posts.ID = relationships.object_ID LEFT JOIN $wpdb->term_taxonomy as tax ON relationships.term_taxonomy_id = tax.term_taxonomy_id LEFT JOIN $wpdb->terms as terms ON tax.term_id = terms.term_id WHERE 1=1 AND ( posts.post_status = 'publish' AND posts.post_author = '$author' AND tax.taxonomy = 'category' ) ORDER BY terms.name ASC "); foreach($categories as $category) : echo '
  • ID ).'" title="'.$category->name.'"> '.$category->name.'
  • '; endforeach; } $defaults = array( 'optioncount' => false, 'exclude_admin' => true, 'show_fullname' => false, 'hide_empty' => true, 'feed' => '', 'feed_image' => '', 'feed_type' => '', 'echo' => true, 'style' => 'list', 'html' => true ); $r = wp_parse_args( $args, $defaults ); extract($r, EXTR_SKIP); $return = ''; /** @todo Move select to get_authors(). */ $users = get_users_of_blog(); $author_ids = array(); foreach ( (array) $users as $user ) $author_ids[] = $user->user_id; if ( count($author_ids) > 0 ) { $author_ids = implode(',', $author_ids ); $authors = $wpdb->get_results( "SELECT ID, user_nicename from $wpdb->users WHERE ID IN($author_ids) " . ($exclude_admin ? "AND user_login 'admin' " : '') . "ORDER BY display_name" ); } else { $authors = array(); } $author_count = array(); foreach ( (array) $wpdb->get_results("SELECT DISTINCT post_author, COUNT(ID) AS count FROM $wpdb->posts WHERE post_type = 'post' AND " . get_private_posts_cap_sql( 'post' ) . " GROUP BY post_author") as $row ) $author_count[$row->post_author] = $row->count; foreach ( (array) $authors as $author ) { $link = ''; $author = get_userdata( $author->ID ); $posts = (isset($author_count[$author->ID])) ? $author_count[$author->ID] : 0; $name = $author->display_name; if ( $show_fullname && ($author->first_name != '' && $author->last_name != '') ) $name = "$author->first_name $author->last_name"; if( !$html ) { if ( $posts == 0 ) { if ( ! $hide_empty ) $return .= $name . ', '; } else $return .= $name . ', '; // No need to go further to process HTML. continue; } $authorAvatar = get_avatar($author->ID); if ( !($posts == 0 && $hide_empty) && 'list' == $style ) $return .= '
    '.$authorAvatar.' '; if ( $author->twitter != '' ) { $return .= ' '; } else { $return .= ' '; } $return .= '
    Founder & Editor: '.$author->nickname.'
    Location: '. $author->location .'
    Industry: Advertising
    Website: '.$author->user_url.'
    Twitter: '.$author->twitter.'
    Website: '.$author->user_url.'

    ' .$author->description. '

    '; $return .= $cat_array = array(); $args=array( 'author' => get_the_author_meta('id'), 'showposts'=>-1, 'caller_get_posts'=>1 ); $author_posts = get_posts($args); if( $author_posts ) { foreach ($author_posts as $author_post ) { foreach(get_the_category($author_post->ID) as $category) { $cat_array[$category->term_id] = $category->term_id; } } } $cat_ids = implode(',', $cat_array); $output = strtr( wp_list_categories( 'include='.$cat_ids.'&title_li=&style=none&echo=0' ), array( '
    ' => ' / ' ) ); echo preg_replace( '@\s/\s\n$@', '', $output ); $return .= '

    '; } $return = trim($return, ', '); if ( ! $echo ) return $return; echo $return; }

    Jeder Einblick oder Ideen sehr geschätzt, danke!

    Solutions Collecting From Web of "List Kategorien für den Autor: list_categories function in list_authors function"

    Es schien interessant, also hier ist meine Version. Nicht sicher über get_user_by() , sollte robuster Weg sein, Objekte für Autoren zu bekommen.

     function my_list_authors() { $authors = wp_list_authors( array( 'exclude_admin' => false, 'html' => false, 'echo' => false ) ); $authors = explode( ',', $authors ); echo '
      '; foreach ( $authors as $author ) { $author = get_user_by( 'login', $author ); $link = get_author_link( false, $author->ID ); echo "
    • {$author->display_name}
        "; $posts = get_posts( array( 'author' => $author->ID, 'numberposts' => -1 ) ); $categories = array(); foreach ( $posts as $post ) foreach( get_the_category( $post->ID ) as $category ) $categories[$category->term_id] = $category->term_id; $output = wp_list_categories( array( 'include' => $categories, 'title_li' => '', 'echo' => false ) ); echo $output . '
    • '; } echo '
    '; }

    Sie versuchen, Ihr PHP-Skript hier über die Community zu debuggen. Das Beste, was Sie mit PHP-Problemen tun können, ist, die Ursache selbst zu finden, damit Sie PHP lernen. Lernen ist der process, Fehler zu machen und dann zu verstehen, wie man sie in der Zukunft verhindern kann. Das ist etwas, was du nur alleine tun kannst, es ist nichts, was eine Gemeinschaft an deiner Stelle tun kann.

    Um mehr über Arrays zu erfahren, besuchen Sie bitte die PHP-Dokumentation: Arrays .

    Neben falscher Verwendung von PHP könnten Sie auch HTML falsch verwenden. Aber die HTML-Probleme sind normalerweise einfacher zu finden, also fang einfach mit dem einen und dann mit dem anderen an. Beginne mit PHP in deinem Fall :).