Skip to content

Kleine Hilfe bei WordPress erbeten

Ich bräuchte mal etwas WordPress-Unterstützung. Wieder einmal gibts im Design Tagebuch einen Kommentar-Rekord. 370 Kommentare an einem Tag! Der Wahnsinn. Robert hat mit seinem Kommentar den Finger auf eine kleine Wunde gelegt. Ich nutze in der Sidebar Most Commented und würde gerne die stark kommentierten Aktionen und Gewinnspiele von den echten Designdiskussionen trennen. Ich bräuchte also in der entsprechenden Code-Zeile eine “exclude”-Anweisung um x Post-IDs auszuklammern. Aktuell steht hier “<?php mdv_most_commented(5, ’<li>’, ’</li>’, true, 30); ?>” Oder gibts eine andere Lösung hierfür? Wer kann weiterhelfen?

Dieser Beitrag hat 13 Kommentare

  1. Bittesehr ;)

    https://phpfi.com/316900 (gepatchtes Plugin)

    Folgende Änderungen müssten übernommen werden:

    Statt:
    mdv_most_commented(5, ’’, ’’, true, 30);

    Aufruf mit:
    mdv_most_commented(5, ’’, ’’, true, array(123, 456, 789));
    …wobei 123, 456, 789 Artikel sind welche ignoriert werden sollen
    (gibt es keine zu ignorierenden Artikel, einfach leeres array übergeben oder weglassen)

    Im Plugin selbst:

    function mdv_most_commented($no_posts = 5, $before = ”, $after = ”, $show_pass_post = false, $duration=”) {

    ersetzen durch (ist abwärtskompatibel)

    function mdv_most_commented($no_posts = 5, $before = ”, $after = ”, $show_pass_post = false, $duration=”, $postings_ignore = NULL) {

    sowie VOR

    if(!$show_pass_post) $request .= ” AND post_password =””;

    einfügen:

    // Patch: Ignorierte Postings nicht anzeigen
    if($postings_ignore != NULL && is_array($postings_ignore))
    foreach($postings_ignore as $ig)
    if(is_numeric($id) && $id > 0)
    $request .= ” AND $wpdb->posts.ID != ” . $id;
    // Ende Patch

    (siehe verlinkte phpfi-Seite) :)

  2. Upps sorry tippfehler

    statt (Zeile 23)
    $request .= ” AND $wpdb->posts.ID != ” . $id;

    it richtig:
    $request .= ” AND $wpdb->posts.ID != ” . $id;

  3. Warum nicht posts.ID NOT IN (0,1,2,3,4,5,N)? Und wäre es nicht vielleicht sogar noch einfacher einfach ein Tag als “dirty” zu definieren welches Beiträge ausschließt?

  4. Danke erst einmal Denis! So ganz scheints noch nicht rund zu sein. Bist Du sicher, dass die “30” nach dem “true” in der Sidebar des Original-Codes raus muss? Es wird aktuell “none found” angezeigt, offensichtlich weil der Zeitraum nicht definiert ist. Aber auch selbst, wenn ich die “30” wieder integriere, werden die gewünschten Posts “468, 407” nicht ausgeklammert.

  5. Hab das nur kurz überflogen, aber ist in dem “Patch” nicht ein dreher mit $id und $ig? Beim Prüfen ob der Paramter numerisch und größer 0 ist, ist anstelle $ig noch $id eingesetzt. Es soll ja der übergebene Array-Value $ig geprüft werden.

    // Patch: Ignorierte Postings nicht anzeigen
    if($postings_ignore != NULL && is_array($postings_ignore))
    foreach($postings_ignore as $ig)
    –>> if(is_numeric($ig) && $ig > 0) <posts.ID != ” . $ig;
    // Ende Patch

  6. Sehe gerad, das der Editor den Code durcheinander gebracht hat..

    Also nochmal ohne Kommentare

    // Patch: Ignorierte Postings nicht anzeigen
    if($postings_ignore != NULL && is_array($postings_ignore))
    foreach($postings_ignore as $ig)
    if(is_numeric($ig) && $ig > 0)
    $request .= “ AND $wpdb->posts.ID != “ . $ig;
    // Ende Patch

  7. Hast Du den Methodenaufruf von Dennis verwendet? Wenn ja, fehlt da noch ein Parameter, da du den Array an die Duration-Stelle übermittelst und das zu einem ungütigen SQL-Statement führt. Hab leider kein WordPress zur Hand um das zu prüfen, ist aber eine Erklärung, da “None found” bei leerem DB-Result ausgeliefert wird.

    Methoden
    function mdv_most_commented ($no_posts = 5, $before = ”, $after = ”, $show_pass_post = false, $duration=”, $postings_ignore = NULL)

    Aufruf mit:
    mdv_most_commented(5, ‘’, ’’, true, 30, array(432));

    Die “li” natürlich wieder einsetzen..

Kommentare sind geschlossen.

An den Anfang scrollen