2015-06-28 10 views
6

Ich versuche, die benutzerdefinierte Taxonomie in der Autorenseite mit einem Zähler anzuzeigen, aber scheint, ich weiß nicht, wie es geht.Wordpress: Wie Postanzahl in Autorseite von benutzerdefinierten Taxonomie anzuzeigen

ich habe einen Code in function.php

add_action('pre_get_posts', function ($q) { 

    if(!is_admin() && $q->is_main_query() && $q->is_author()) { 

     $q->set('posts_per_page', 100); 
     $q->set('post_type', 'custom_feedback'); 

    } 

}); 

und in meinem Autor:

<div class="feedback-respond"> 
     <h3 class="feedback-title">User Feedback </h3> 
      <?php if (have_posts()) : while (have_posts()) : the_post(); ?> 
       <?php the_content(); ?> 
      <?php endwhile; else: ?> 
       <p><?php _e('No posts by this author.'); ?></p> 
      <?php endif; ?> 
      </div> 

Der Code funktioniert für alle Autorenprofile, aber ich weiß nicht, wie man Holen Sie sich die benutzerdefinierte Taxonomie, die wie folgt angezeigt wird:

Benutzer-Feedback

6 POSITIVE Feedback 4 NEGATIVE Feedback

Alle Bewertungen geht hier

Alle Bewertungen geht hier

Alle Bewertungen geht hier

Durch die Art und Weise es eine benutzerdefinierte Post-Typ ist (custom_feedback) und benutzerdefinierte Taxonomie (feedback_taxonomy) mit den beiden Kategorien Positiv und Negativ.

Bitte helfen Meister?

+0

https://codex.wordpress.org/ Function_Reference/get_post_custom – odedta

+0

aber es sind keine benutzerdefinierten Felder, es ist benutzerdefinierte Taxonomie in author.php angezeigt. – rolex

+0

Lassen Sie mich das für Sie: http://wordpress.stackexchange.com/questions/10175/how-to-display-custom-taxonomies-in-posts – odedta

Antwort

1

Die einzige Möglichkeit, dies zu erreichen, besteht darin, zwei separate Abfragen auszuführen und die von den zwei separaten Abfragen zurückgegebenen Nachrichten zu zählen. Dazu werden wir get_posts als get_posts bereits einige wichtige Standardwerte an WP_Query übergeben, um die Abfrage schneller und leistungsorientierter zu machen.

Wir werden der Abfrage einen riesigen Zeit- und Ressourcenschoner hinzufügen, 'fields' => 'ids'. Dadurch werden nur die Post-IDs und nicht das vollständige Post-Objekt abgerufen. Dadurch können Abfragezeit und Datenbankabfragen um 99% reduziert werden. Obwohl Sie zwei separate Abfragen für die vollständige Datenbank ausführen, ist der Verlust der Seitenleistung unbemerkt.

setzen alles in Code Lets (Diese in author.php geht, und beachten Sie, dieser Code ist nicht getestet und benötigt mindestens PHP 5.4+)

$author_id = get_queried_object_id(); // Gets the author id when viewing the author page 

// Add our term slugs into an array. 
$terms = ['positive', 'negative']; // Just make sure these values are correct 
$count = []; 
foreach ($terms as $term) { 
    // Build our query 
    $args = [ 
     'nopaging' => true, 
     'post_type' => 'custom_feedback', 
     'author' => $author_id, 
     'tax_query' => [ 
      [ 
       'taxonomy' => 'feedback_taxonomy', 
       'field' => 'slug', 
       'terms' => $term 
      ], 
     ], 
     'fields' => 'ids' 
    ]; 
    $q = get_posts($args); 

    // Count the amount of posts and add in array 
    $count[$term] = count($q); 
} 

// Display our text with post counts, just make sure your array keys correspond with your term slugs used 
$positive = (isset($count['positive'])) ? $count['positive'] : 0; 
$negative =(isset($count['negative'])) ? $count['negative'] : 0; 

echo $positive . ' POSITIVE feedback ' . $negative . ' NEGATIVE feedback'; 
+0

funktioniert perfekt. Vielen Dank @PieterGoosen. Kann ich noch etwas fragen?Gibt es eine Möglichkeit, den the_content() zu ändern? Ich möchte eine CSS-Klasse zur negativen und positiven Taxonomie hinzufügen. – rolex

+0

Ich freue mich, dass es funktioniert. Ja, das kann gemacht werden. Du solltest aber eine neue Frage dafür starten :-) –

+0

ok ich werd..dank viel. – rolex