So filtern Sie Beiträge, die nach einem bestimmten Datum in der WordPress-API v2 geändert wurden

Lesezeit: 4 Minuten

Benutzeravatar von Vignesh Sundaramoorthy
Vignesh Sundaramoorthy

Ich versuche, die nach einem bestimmten Datum geänderten Beiträge über die WordPress-REST-API abzurufen (zu filtern). 2.0-beta15 & WordPress v4.8.3 und aktualisiere das mit den vorhandenen Beiträgen in meiner Client-App.

Verwenden after und before Von WordPress bereitgestellte Abfrageparameter, auf deren Grundlage ich Beiträge filtern kann date Anstatt von modified aufstellen.

Ich habe versucht /wp-json/wp/v2/posts?filter[date_query][0][column]=post_modified_gmt&filter[date_query][0][after]=1+month+ago dies verwenden https://github.com/WP-API/rest-filter wie erwähnt in dieser Angelegenheitaber dieses date_query Filter funktioniert jetzt auch nicht.

Ich brauche eine Option wie

http://bankersdaily.in/wp-json/wp/v2/posts?modified_after=2017-10-31T13:32:10&_envelope
http://bankersdaily.in/wp-json/wp/v2/posts?after=2017-10-31T13:32:10&field=modified&_envelope

Verweise:

https://developer.wordpress.org/rest-api/reference/posts/#list-posts
https://codex.wordpress.org/Class_Reference/WP_Query?#Date_Parameters

Benutzeravatar von birgire
Birgire

Es sieht so aus, als ob es nicht unterstützt wird, wenn Sie die Datei überfliegen Dokumente

Hier sind einige Problemumgehungen:

1) Benutzerdefiniert modified_after Rest-Abfrageparameter

Wir können die hinzufügen modified_after Rest-Abfrageparameter für die post Beitragstyp mit:

add_filter( 'rest_post_collection_params', function( $query_params ) {
    $query_params['modified_after'] = [
        'description' => __( 'Limit response to posts published after a given ISO8601 compliant date.' ),
        'type'        => 'string',
        'format'      => 'date-time',
    ];
    return $query_params;
} );

und ändern Sie dann die Rest-Post-Abfrage entsprechend mit:

add_filter( 'rest_post_query', function( $args, $request ) {
    if( isset( $request['modified_after'] ) && ! isset( $request['after'] ) ) {
        $args['date_query'][0]['after'] = $request['modified_after'];
        $args['date_query'][0]['column'] = 'post_modified';
    }
    return $args;
}, 10, 2 );

wo wir lassen after Vorrang haben modified_after.

Beispiel:

/wp-json/wp/v2/posts??modified_after=2017-11-07T00:00:00

Anmerkungen:

Wir könnten verwendet haben modified_gmt_after für die post_modified_gmt Säule.

Es ist möglicherweise besser, einen eindeutigeren Namen als zu verwenden modified_after um eine mögliche zukünftige Namenskollision zu vermeiden.

Um dies auf andere Beitragstypen auszudehnen, können wir die verwenden rest_{$post_type}_collection_params und die rest_{$post_type}_query Filter.

Eine weitere Option besteht darin, einen benutzerdefinierten Endpunkt und Parameter zu erstellen, das ist dort mehr Arbeit. Es stellt sich natürlich die Frage, ob wir der aktuellen Rest-API einen benutzerdefinierten Parameter hinzufügen sollten. In einigen Fällen sollte es in Ordnung sein, da wir die Antwort nicht entfernen oder ändern oder die Funktionsweise anderer Parameter ändern.

2) Benutzerdefiniert date_query_column Rest-Abfrageparameter

Ein anderer Ansatz wäre die Einführung eines Brauchs date_query_column Rest-Abfrageparameter:

add_filter( 'rest_post_query', function( $args, $request ) {
    if ( ! isset( $request['before'] ) && ! isset( $request['after'] ) )
        return $args;

    if( isset( $request['date_query_column'] ) )
        $args['date_query'][0]['column'] = $request['date_query_column'];

    return $args;
}, 10, 2 );

add_filter( 'rest_post_collection_params', function( $query_params ) {
    $query_params['date_query_column'] = [
            'description' => __( 'The date query column.' ),
            'type'        => 'string',
            'enum'        => [ 'post_date', 'post_date_gmt', 'post_modified', 'post_modified_gmt', 'comment_date', 'comment_date_gmt' ],
        ];
    return $query_params;
} );

das wäre verfügbar, wenn entweder after oder before Parameter eingestellt sind.

Beispiel:

/wp-json/wp/v2/posts??after=2017-11-07T00:00:00&date_query_column=post_modified

Ich hoffe es hilft!

  • Kann ich das oben hinzufügen add_filter Code hier github.com/WP-API/rest-filter/blob/master/plugin.php#L18 After Fork und die Verwendung dieses aktualisierten Plugins funktionieren?

    – Vignesh Sundaramoorthy

    7. November 2017 um 14:13 Uhr


  • @VigneshSundar Ich würde stattdessen nicht empfehlen, den Kerncode zu ändern Erstellen Sie ein benutzerdefiniertes Plugin. Auf diese Weise verlieren Sie die Änderungen nicht jedes Mal, wenn Sie den WordPress-Kern aktualisieren.

    – Birgire

    7. November 2017 um 14:17 Uhr

  • Aber ich denke Rest-Filter ist nicht Teil von WP-API mit WordPress-Kern zusammengeführtes ist ein Plugin, das wir separat hinzufügen können und das Aktualisieren von WordPress hat keinen Einfluss darauf

    – Vignesh Sundaramoorthy

    7. November 2017 um 14:27 Uhr

  • Mein Ansatz war ohne dieses Plugin im Hinterkopf. Aus dem gleichen Grund würde ich auch vermeiden, Plugins von Drittanbietern zu modifizieren. Ich bin jetzt auf dem Handy, also werde ich es später überprüfen

    – Birgire

    7. November 2017 um 14:39 Uhr

  • Danke für die Anleitung, ich werde ein neues Plugin erstellen, aber zu Ihrer Information, ein paar Worte aus der Beschreibung des Restfilters, gerade wurde ich gesehen – ‘aus der API entfernt, als es in den WordPress-Kern zusammengeführt wurde

    – Vignesh Sundaramoorthy

    7. November 2017 um 14:55 Uhr

Native Unterstützung – WordPress 5.7

Ab WordPress 5.7 wurde Unterstützung für die Abfrage nach dem Post-Modifikationsdatum anstelle des Veröffentlichungsdatums hinzugefügt. Benutzerdefinierte Problemumgehungen sind nicht mehr erforderlich.

Verwendungszweck:

/wp-json/wp/v2/posts??modified_after=2021-01-01T00:00:00Z

Anmerkungen: https://make.wordpress.org/core/2021/02/23/rest-api-changes-in-wordpress-5-7/

Ich habe ein WordPress-Plugin erstellt WP REST API – Filtern Sie Beiträge nach Datum mit der angegebenen Spaltewer Bedarf hat, kann dies nutzen.

Mit diesem Plugin können wir die Spalte angeben (jede von date, date_gmt, modified, modified_gmt) als Abfrageparameter date_query_column um den/die eingegebenen Wert(e) abzufragen before und/oder after Abfrageparameter.

Verwendungszweck

Verwenden Sie die date_query_column Parameter auf jedem Post-Endpunkt wie z /wp/v2/posts oder /wp/v2/pages in Kombination mit before und/oder after Parameter.

/wp-json/wp/v2/posts??after=2017-11-08T13:07:09&date_query_column=modified

Github-Repository vom selben.

1388320cookie-checkSo filtern Sie Beiträge, die nach einem bestimmten Datum in der WordPress-API v2 geändert wurden

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

Privacy policy