Über Web, Tech, Games, Art,
Musik, Code & Design

18. November 2024

WordPress-Plug-in „Custom Field Suite“ – Bugfix

Leider ist die Entwicklung des WordPress-Plug-ins „Custom Field Suite“ im Sommer diesen Jahres eingestellt worden. Ich habe das Plug-in immer gerne genutzt und werde es auch noch weiterhin auf Websites einsetzen.

Allerdings gibt es in diesem Plug-in einen Bug, der mich schon des öfteren verwirrt hat. Wenn man z.B. einen Post mit einem Metafeld „Datum“ erstellt und dieses Datum anschließend noch mal ändert, wird der Post im WordPress-Loop an falscher Stelle ausgegeben. Der Fehler, den CFS hier macht ist, dass mehrere Datenbankeinträge mit der gleichen post_id erzeugt werden. CFS legt also einen neuen Eintrag an, statt den alten zu aktualisieren.

Während mit „CFS()->get(’startdatum‘)“ der richtige Wert ausgegeben wird, wird mit „get_post_meta(get_the_ID(), ’startdatum‘, true)“ der alte Wert noch der alte Wert ausgegeben.

Mit folgendem Code in functions.php kann dieser Bug beseitigt werden:

add_action('save_post', function($post_id) {
    global $wpdb;

    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {
        return; 
    }

    if (!current_user_can('edit_post', $post_id)) {
        return; 
    }

    $duplicates_query = "
        DELETE pm1
        FROM {$wpdb->postmeta} pm1
        INNER JOIN {$wpdb->postmeta} pm2
        ON pm1.post_id = pm2.post_id
        AND pm1.meta_key = pm2.meta_key
        AND pm1.meta_id < pm2.meta_id
        WHERE pm1.post_id = %d
    ";

    $wpdb->query($wpdb->prepare($duplicates_query, $post_id));

});Code-Sprache: PHP (php)

Hier wird die Datenbank beim Speichern eines Posts um doppelte Einträge bereinigt.


Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert