web-dev-qa-db-fra.com

Filtrer les résultats de REST API

Je veux construire un plugin pour supprimer tous les messages d'utilisateurs spécifiques de la sortie rest json. Comment puis-je ajouter un filtre ou crochet pour le faire?

4
AVEbrahimi

Si vous utilisez WP 4.7+, vous pouvez filtrer la requête à l'aide du rest_$type_query hook wp-includes/rest-api/endpoints/class-wp-rest-posts-controller.php:L267.

Ceci est un exemple de travail qui filtre la requête en cours selon des termes donnés

    $types = [
        'post',
        'page',
    ];

    foreach ( $types as $type ) {
        add_filter( 'rest_' . $type . '_query', 'filter_rest_query_by_zone', 2, 10 );
    }

    function filter_rest_query_by_zone( $args, $request ) {
            $zones = [ 'term1', 'term2', 'term3' ];

            $args['tax_query'] = array(
                'relation' => 'AND',
                array(
                    'taxonomy' => 'zones',
                    'field'    => 'term_id',
                    'terms'    => $zones
                )
            );

            return $args;
    }
3
Alex Sancho

Vous commencez à vous sentir comme un perroquet, mais c'est reparti: (... Si vous avez besoin de résultats différents de ceux renvoyés par l'API par défaut, créez simplement votre propre point de terminaison. Les utilisateurs de plus en plus nombreux utiliseront ces API pour admin, plus il sera risqué de les modifier de quelque manière que ce soit.

0
Mark Kaplun