Wordpress и Angular 7. Как получить путь к активу? - PullRequest
2 голосов
/ 30 мая 2019

Я изо всех сил пытаюсь заставить Angular 7 и Wordpress работать вместе. Ну, на самом деле, мне удалось заставить его работать без каких-либо плагинов, что само по себе было не слишком сложно, но я не могу заставить Angular получать какие-либо активы. Проблема в том, что мое приложение Angular находится по URL-адресу https://mywordpresssite.com/dashboard А мой проект angulare использует хранилище ресурсов для хранения своих изображений. Когда я собираю приложение и размещаю его на своем сайте, Angular пытается получить его активы из https://mywordpresssite.com/dashboard/assets/... (его базовый URL-адрес находится в / dashboard), и, конечно же, WordPress выплевывает страницу 404. В самом WordPress я получаю разные изображения, как это:

function _img($image_name) {
    echo get_template_directory_uri() . "/assets/{$image_name}";
}

Я хотел использовать несколько пользовательских маршрутов, и я создал маршрут к https://mywordpresssite.com/assets, используя этот класс https://github.com/anthonybudd/WP_route как это

WP_Route::get("assets/{image_name}", 'get_image_for_angular');
function get_image_for_angular($image_name) {
    echo get_template_directory_uri() . "/{$image_name}";
}

И он показывает правильный путь к файлу, но, тем не менее, WordPress по-прежнему показывает 404 вместе с этим.

Я также пытался использовать file_get_contents, он показывает байты изображения и 404 содержимого после этого

Я полностью застрял с этим. Может кто-нибудь помочь мне решить это? Каков правильный способ информировать Angular об актах WP

p.s. Мой проект Angular живет в другом репо и ничего не знает о структуре сайта. Я только строю это для своего сайта. Я не хочу использовать какие-либо абсолютные пути, мне нужно держать угловой, как это

1 Ответ

1 голос
/ 30 мая 2019

Мне уже удалось решить эту проблему.Вот мое решение

WP_Route::get("assets/img/{image_name}", 'get_image_for_angular');
function get_image_for_angular($image_name) {
    $path = get_template_directory_uri() . "/img/{$image_name}";
    header("Location: {$path}", TRUE, 301);
    exit();
}

Это работает.Но я чувствую что-то плохое по этому поводу.Так что я был бы признателен, если бы кто-нибудь рассказал мне о лучшем подходе

...