Wpis z mikrobloga

#php #wordpress
Siema mirki. Ostatnio poszukuję pracy i aplikuję w rózne miejsca, no i ostatnio otrzymałem takie zadanie na interview, gdzie mam coś ogarnąc na Wordpressie. Zadanie nie jest skomplikowane wcale a wcale. Problem jest taki, że nie jestem ultra kucem w WP, no i mam pewien kłopot.
w zadaniu mam

When installed, the plugin has to make available a custom endpoint on the WordPress site. With “custom endpoint” we mean an arbitrary URL not recognized by WP as a standard URL, like a permalink or so.
Note that this is not a REST endpoint.
When a visitor navigates to that endpoint, the plugin has to send an HTTP request to a REST API endpoint.

Rozumiem, że mam klepnąć sobie taką stronkę, która nie będzie renderowana przez wordpressa, tylko będzie działała samodzielnie. Udało mi się coś takiego zrobić, poprzez dodanie

public function intercept_template_loading(){
$urlPath = trim(parse_url(add_query_arg([]), PHP_URL_PATH), '/');
if ($urlPath === 'foobar') {
ob_start();
include(plugin_dir_path(__FILE__) . './../views/index.php');
$content = ob_get_contents();
ob_end_clean();
echo $content;
}
}
add_action('init', [$this, 'intercept_template_loading']);

no ale jak się podpinam pod init, to nie mogę zainkludować własnego JS, CSS itd. mogę sobie renderować html i w sumie tyle. Próbowałem podpiąć się pod wp_enqueue_scripts, żeby dołączyć własne skrypty, ale to nie działa, bo jak rozumiem init wywołuje się wcześniej.

Tak więc albo źle zrozumiałem ten tekst, albo źle kombinuję z tworzeniem takiego "endpointa". Czy ktoś poratowałby jakimś przykładem, bo mi się nie daje nic znaleźć samemu?
  • 5
@mariecziek: nie znam się na wordpresie, ale chodzi o to, aby stworzyć jakiś podstawowy routing np. pod adresem /weather i jak się odwiedzi ten adres to trzeba się podłączyć do jakiegoś zewnętrznego API, np. możesz sobie wybrać jakieś API z pogodą i wyświetlić dane, a to wszystko ma się dziać w ramach wordpressa. Dla urozmaicenia możesz sobie np. zrobić /weather/{city} czyli dodatkowy parametr, ktory bedzie pokazywał pogodę dla konkretnego miasta
@goodghost: Zadanie jest bardziej złożone. Jest tam przykładowe API, z użytkownikami i mam tam wyświetlać dane, ostylować to, dać testy itd. Ogólnie bułka z masłem, ale kuleje moja znajomość WP na takim poziomie, żeby to wszystko działało właśnie pod kontrolą WP. Gdyby to było symfony, czysty PHP, może nawet magento, to bym sobie ogarnął, a tutaj mam wrażenie, że mam napisać plugina do WP, co będzie działał osobno od WP, ale
@mariecziek: nie wydaje mi się zeby to miał być "plugin do WP, co bedzie działał osobno od WP", myślę, że to powinien być po prostu plugin do WP z customowym routingiem i wykorzystaniem API o którym wspomniałeś, ale jeśli tak będzie to na pewno powinno być to zrobione zgodnie ze sztuką i standardem WP, a na pewno nie jakiś customowy kod, który tylko działa