WordPress Anzahl der Beiträge abrufen, ohne get_posts () zu verwenden?

Lesezeit: 2 Minuten

WordPress Anzahl der Beitrage abrufen ohne get posts zu verwenden
Scott B

Benötigen Sie einen Funktionsaufruf, der ausschließlich dazu dient, die Anzahl der Beiträge zu ermitteln, die einem Kriterium entsprechen. Ich glaube, dass die Funktion get_posts() für diese Operation zu teuer ist. Ich versuche lediglich zu entscheiden, ob ein Link “Weitere Beiträge anzeigen” angezeigt werden soll oder nicht, wenn eine vordefinierte Anzahl von anzuzeigenden Beiträgen vorhanden ist …

Die Standardanzahl der anzuzeigenden Post-Links ist beispielsweise 3. Ich möchte den Link „Weitere Posts anzeigen“ nur anzeigen, wenn die Gesamtzahl der Posts 3 überschreitet.

Hier ist mein Code…

$cat1=get_cat_ID('test');
$cat2=get_cat_ID('test2');
$myposts = get_posts(array('cat' => "$cat1,-$cat2",'showposts' => 3));
$myposts2 = get_posts(array('cat' => "$cat1,-$cat2"));
    $mypostcount = count($myposts2);
foreach($myposts as $idx=>$post)
?>
<li><a>Post Info Goes here</a></li>
<?php 
if ($mypostscount > 3){ ?>Show View All Link<?php ?>

Ihre Frage war nicht ganz klar, also hier zwei Methoden.

Erstens, wenn der Benutzer eine Kategorieseite anzeigt und Sie diese Informationen anzeigen möchten, können Sie einfach Folgendes verwenden:

$myCount = $wp_query->found_posts;

Dadurch wird die Anzahl der für die letzte Abfrage gefundenen Beiträge zurückgegeben.

Wenn Sie die Anzahl der Posts für jede Kategorie zählen möchten, sagen wir für eine Homepage, würde ich es einfach über PHP/MySQL machen. Hier ist ein Beispiel:

SELECT COUNT( DISTINCT cat_posts.ID ) AS post_count 
FROM wp_term_taxonomy AS cat_term_taxonomy 
INNER JOIN wp_terms AS cat_terms ON cat_term_taxonomy.term_id = cat_terms.term_id 
INNER JOIN wp_term_relationships AS cat_term_relationships ON cat_term_taxonomy.term_taxonomy_id = cat_term_relationships.term_taxonomy_id 
INNER JOIN wp_posts AS cat_posts ON cat_term_relationships.object_id = cat_posts.ID 
WHERE cat_posts.post_status="publish" AND cat_posts.post_type="post" AND cat_term_taxonomy.taxonomy = 'category' AND cat_terms.term_id = '13'

Ich habe es gerade getestet und es funktionierte einwandfrei. Sobald Sie die Rückgabe von der Abfrage erhalten haben, greifen Sie einfach die Zeile und gehen Sie dann wie folgt vor:

echo $row['post_count'];

oder was auch immer Sie mit den Daten möchten. Alles, was Sie tun müssen, um Kategorien zu ändern, ist einfach die term_id der letzten WHERE-Klausel zu ändern

cat_terms.term_id = '13'

Ersetze 13 durch die Katze, die du zählen möchtest.

Wenn Sie es stattdessen nach Kategorienamen machen möchten, können Sie den letzten Teil von ändern

cat_terms.term_id = '13'

zu

cat_terms.slug IN ('cookies', 'uncategorized') or cat_terms.slug IN ('cookies')

Der erste wählt aus mehreren Kategorien aus, der zweite aus nur einer. Hoffe das hilft,

  • Ich habe die Welt nach $wp_query->found_posts durchsucht; vielen Dank <3

    – Brise

    26. Januar 2012 um 14:53 Uhr

Sie können eine benutzerdefinierte WP_Query erstellen, in der Sie einen Filter verwenden posts_fields um zu ändern, was von der Abfrage zurückgegeben wird. Verwenden Sie also WP_Query wie gewohnt, um die spezifische Liste der Posts zu erhalten, nach denen Sie suchen, und ändern Sie die Felder, die gezogen werden, um die zu erhalten COUNT(wp_posts.ID).

Stellen Sie außerdem sicher, dass Sie posts_per_page in ändern -1 damit Sie alle Beiträge erhalten.

Aber auch, wie oben von David erwähnt, haben die Abfrageobjekte das Element found_posts, das Ihnen mitteilt, wie viele Posts insgesamt mit den Kriterien übereinstimmen. Ihre Lösung könnte also darin bestehen, vollständige WP_Query-Objekte zu verwenden, anstatt get_posts zu verwenden, um Ihre Liste abzurufen.

Ab WordPress 2.5 gibt es dafür eine Funktion:
http://codex.wordpress.org/Function_Reference/wp_count_posts

Wenn Sie ihm nicht vertrauen, verwenden Sie eine $wpdb-Abfrage oder PHP/MySQL ohne den WordPress-Wrapper

  • Hallo David, wp_count_posts zählt ALLE Beiträge. Sie dürfen jedoch nicht “alle Beiträge in dieser Kategorie zählen und nicht in dieser Kategorie” angeben, was für meine Frage von wesentlicher Bedeutung ist.

    – Scott B

    25. Januar 2010 um 17:27 Uhr

1003000cookie-checkWordPress Anzahl der Beiträge abrufen, ohne get_posts () zu verwenden?

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

Privacy policy