Muszę wyświetlać popularne i najnowsze posty w innej witrynie PHP w tej samej domenie.
Przykład:
www.example.com
-> strona główna (php, mysql)www.example.com/blog
-> Blog WordPress
Musisz pokazać popularne, najnowsze posty na blogu w głównej witrynie.
Pamiętaj, że blog i strona główna korzystają z dwóch osobnych baz danych.
Zdecydowałem się na użycie wtyczki WP REST JSON API . Teraz mam inne pytanie.
Używam następującego kodu, aby pobrać popularny post z ostatniego tygodnia. Tak naprawdę potrzebuję uzyskać te same dane za pośrednictwem połączenia 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 );
Jak mogę to zrobić?
json
plugin-json-api
popular-posts
web-services
wp-api
Janith Chinthana
źródło
źródło
Odpowiedzi:
Dam ci krótką odpowiedź na twoją aktualizację, robiąc to z WP API . Interfejsy API mają możliwość korzystania z WP_Query jak również w rdzeniu, ale o parametrach get w adresie URL.
Adres URL do pobierania treści ze statusu postu wygląda następująco:
Aby pobrać zawartość z parametrami WP_Query, do których jesteś przyzwyczajony, możesz to zrobić w następujący sposób:
Możesz zbudować niestandardowe zapytanie ze wszystkimi parametrami również w adresie URL. Możesz zobaczyć, w jaki sposób metoda chwytania tych danych jest znana w
WP_Query
przypadku standardowej pętli WordPress. Jeśli nie określisz parametru,WP_Query
zostaną użyte wartości domyślne .Rezultatem jest json, który możesz przeanalizować i użyć dla swojej strony zewnętrznej.
Zobacz także stronę API, aby uzyskać więcej parametrów i dokumentacji.
Aktualizacja dla
date_query
Interfejs API nie może utworzyć wyniku dla takiego zapytania
query_date
. Zobacz dokumentację dla wszystkich możliwych parametrów.Ale nowa wersja zostanie wydana w widoku dni, tygodnie. I zobacz ten problem, aby omówić rozwiązanie tego zapytania dotyczącego daty. Alternatywnie użyj niestandardowego filtra za pomocą haka, takiego jak:
Aktualizacja dla
meta_query
Interfejs API nie może również korzystać z tej funkcji domyślnego zapytania WP. Ale możesz użyć haka, aby ulepszyć API do tego wymagania. Również tutaj mały przykład.
Teraz mogę zadzwonić do JSON w taki sposób, aby naśladować filtr wpisów Wp_query już na serwerze:
Aktualizacja meta zapytania oparta na tej odpowiedzi .
źródło
'date_query' => array( array( 'after' => '1 week ago' ) ),
jako ciąg zapytaniafilter[posts_per_page]=2&filter[order]=ASC
te dwa nie działają, więc zawsze podaje tylko ostatnie postyhttp://localhost/wpbeta/plugins/wp-json/posts?filter[posts_per_page]=1&filter[order]=ASC
. O wiele więcej w mojej aktualizacji poniżej w odpowiedzi.post_per_page
iorder
działa, ale co z tymmeta_key
. czy to działa z tym, czy potrzebuję do tego dodatkowej pracy?