Voir le message populaire sur un autre site web php via WP REST JSON API

9

Je dois montrer les programmes populaires & publications récentes dans un autre site Web PHP appartenant au même domaine.

Exemple:

  1. www.example.com - > site principal (php, mysql)
  2. www.example.com/blog - > Blog WordPress

Besoin d'afficher les publications récentes et populaires du blog sur le site Web principal.

Veuillez noter que le blog et le site Web principal utilisent deux bases de données distinctes.

J'ai décidé d'utiliser le plug-in API JSON WP REST . Maintenant j'ai une question différente.

J'utilise le code suivant pour récupérer le message populaire de la semaine dernière. Ce dont j'ai réellement besoin, c'est d'obtenir ces mêmes données via un appel API.

$args = array(
    'date_query' => array( array( 'after' => '1 week ago' ) ),  
    'posts_per_page' => $recent_posts_count,
    'ignore_sticky_posts' => 1,
    'meta_key' => 'post_views_count',
    'orderby' => 'meta_value_num',
    'order' => 'DESC'
);
$popularposts = new WP_Query( $args );

Comment puis-je faire cela?

    
posée Janith Chinthana 28.04.2015 - 12:14

1 réponse

8

Je vais vous donner une petite réponse à votre mise à jour, à l'aide de l’ API WP . Les API ont la possibilité d’utiliser WP_Query comme dans core, mais à propos des paramètres get dans l’URL.

Une URL permettant d'extraire du contenu de Post Status ressemblerait à ceci:

http://example.com/wp-json/posts

Pour extraire du contenu avec les paramètres WP_Query auxquels vous êtes habitué, vous pouvez le faire comme suit:

http://example.com/wp-json/posts?filter[posts_per_page]=2&filter[order]=ASC

Vous pouvez créer votre requête personnalisée avec tous les paramètres également dans l'URL. Vous pouvez voir à quel point la méthode de récupération de ces données vous semble familière avec l'utilisation de WP_Query pour une boucle WordPress standard. Si vous ne spécifiez pas de paramètre, la valeur par défaut de WP_Query sera utilisée.

Le résultat est JSON, que vous pouvez analyser et utiliser pour votre site externe.

Voir aussi le site de l'API pour plus d'informations sur les paramètres et la documentation.

Mise à jour pour date_query

L'API ne peut pas créer de résultat pour une requête telle que query_date . Consultez la documentation pour connaître tous les paramètres possibles.

Mais la nouvelle version sera publiée dans des jours, des semaines et des semaines. Et consultez ce numéro pour en savoir plus sur une solution pour cette requête de date. Vous pouvez également utiliser un filtre personnalisé via un filtre, par exemple:

// Allow datequery in /posts filter
add_filter( "json_query_vars", function( $query_args ) {
    return array_merge( $query_args, 
        array( "date_query" => array( array( "after" => "1 week ago" ) ) )
    );
} );

Mise à jour pour meta_query

L’API ne peut pas également utiliser cette fonctionnalité du WP-Query par défaut. Mais vous pouvez utiliser un crochet pour améliorer l’API en fonction de cette exigence. Ici aussi, un petit exemple.

add_filter('json_query_var-meta_query', 'add_meta_query', 10, 1);

function add_meta_query( $data ){

    $args = array();
    $args['relation'] = 'AND';

    foreach ( $data as $key => $value ) {
        if ( 'relation' === $key ) {
            $args['relation'] = $data['relation'];
        }

        if ( substr($key, 0, 3) === 'key' ) {
            $arg_num = substr( $key, 3 );
            $args[ (int) $arg_num ][ 'key' ] = $value;
        }

        if (  substr( $key, 0, 7 ) === 'compare' ) {
            $arg_num_comp = substr( $key, 7 );
            $args[ (int) $arg_num_comp ][ 'compare' ] = $value;
        }
    }

    return $args;
}

Maintenant, je peux appeler JSON comme reposant pour imiter le filtre de publications Wp_query déjà sur le serveur:

?filter[meta_query][key]=_newsml_categories_newsstream&filter[meta_query][key2]=homepage&filter[meta_query][relation]=AND&filter[meta_query][compare]=NOT%20EXISTS&filter[meta_query][compare2]=NOT%20EXISTS

Mise à jour de la méta-requête basée sur cette réponse .

    
réponse donnée bueltge 28.04.2015 - 15:46

Lire d'autres questions sur les étiquettes