Count Post in Cat with Custom Field Value

  • Moin moin...
    folgende Situation:

    Ich möchte zum einen zählen, wie viel Posts ich in einer (aktuell angezeigten ) Kategorie habe. Das realisiere ich auch via:

    PHP
    $category = get_the_category();
    $my_category_count = $category[0]->category_count;

    --> kein Problem

    Jetzt verwende ich in den Posts ein Custom Field, welche genau 3 verschiedene Werte haben kann (Wert1, Wert2, Wert)3. Diese werden via DropDown beim erstellen des Posts zugewiesen.

    Ich möchte jetzt gern die Posts in der (aktuell angezeigten ) Kategorie zählen, deren Wert im Custom Field = Wert3 ist. Hab da schon so einiges ausprobiert, aber so richtig finde ich da nicht die Lösung.

    Im Grunde brauch ich ein Code der folgendes kann:

    Count Posts in Category where Custum Field Value = Wert3.

    Kann mir da von euch vielleicht einer weiterhelfen?

    Vielen Dank im Voraus

    • Anzeige

    Hallo!

    Wenn du gerade an deiner Website arbeitest oder dein aktuelles Hosting überdenkst: Wir betreiben mit NetzLiving eine Hosting-Plattform, die speziell auf Performance, Sicherheit und einfache Verwaltung ausgelegt ist.

    • ✔️ Schnelle Ladezeiten (optimiert für WordPress & Co.)
    • ✔️ Deutsche Server & DSGVO-konform
    • ✔️ Persönlicher Support (kein 0815-Ticket-System)

    Mehr erfahren

  • Hallo moeppy01,

    a.) Deine dargestellte Abfrage zum Zählen der Posts in einer Kategorie gibt Dir zurück, wieviele posts mindestenst in dieser Kategorie sind. get_the_category() gibt Dir eine Liste(!) zurück ... mehr hier.

    b.) Google mal nach: WP_Query, meta_query, found_posts
    Es gibt viele Wege, einer könnte ähnlich wie dieser Dreizeiler aussehen:

    PHP
    $args = array('cat'=>'CategoryName','meta_query'=>array(array('key'=>'CustomFieldName','value'=>'CustomFieldWert','compare'=>'=','type'=>'CHAR')));
    $query = new WP_Query($args);
    echo $wp_query->found_posts;

    Einem Post können ja mehrere Custom Fields zugeordnet werden ... der Name ist unter key einzugeben ... damit solltest Du zumindest eine Basis für weitere Recherchen haben :-)

    Good luck, Photoweblog
    ---
    WP OSM Plugin

  • PHP
    $args = array('cat'=>'CategoryName','meta_query'=>array(array('key'=>'CustomFieldName','value'=>'CustomFieldWert','compare'=>'=','type'=>'CHAR')));
    $query = new WP_Query($args);
    echo $query->found_posts;

    $wp_query became $query in the last line ...

  • Der Code liefert die Anzahl aller Post mit dem meta-value="erledgt", nicht aber die aus der jeweiligen Kategorie.

    ich ermittle die kategorie:

    PHP
    $mycategory = get_the_category($post->ID);
    $mycategory = $mycategory[0];
    $mycategory_name = $mycategory->name;

    angewendet auf den code:

    PHP
    $myargs = array('cat'=>$mycategory_name,'meta_query'=>array(array('key'=>'status','value'=>'erledigt','compare'=>'=','type'=>'CHAR')));
    $myquery = new WP_Query($myargs);echo $myquery->found_posts;

    Ausgegeben werden dennoch die Anzahl der Posts mit dem Status "erledigt" aller Kategorien, nicht aber der zuvor ausgelesenen.

    Egal was ich bei cat'=>'[COLOR=#DD0000][FONT=monospace]CategoryName[/FONT][/COLOR]' angebe, ermittelt wird immer über alle Kategorien

    Einmal editiert, zuletzt von moeppy01 (1. Juni 2014 um 21:32)

  • So. Oder so ähnlich. Lass uns wissen was rauskommt ...

    Einmal editiert, zuletzt von Photoweblog (2. Juni 2014 um 06:42)

  • Gleicher Effekt.
    Mit der Übergabe der Kategorie als als Variable bricht er einfach ab.
    Geb ich die Kategorie manuell an, bekomme ich wieder die Anzahl über alle Kategorien ermittelt - egal welche Kategorie ich angebe, so auch wenn ich diese leer lasse.

  • so... viel probiert und nun eine Lösung gefunden:

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!