WordPress

rest api – Aplikacje jednostronicowe z WordPress: trasy i szablony

  • 11 sierpnia, 2017
  • 3 min read
rest api – Aplikacje jednostronicowe z WordPress: trasy i szablony


(Przeczytaj uważnie, to pytanie dotyczy WordPressa, a nie AngularJS)

Próbuję utworzyć aplikację z jedną stroną za pomocą AngularJS i interfejsu API reszty WordPress.

Wiele rzeczy, które są normalne podczas tworzenia wspólnego motywu (jak hierarchia szablonów, różne ustawienia itp.) Wygląda w tym przypadku na nieprawidłowe, chyba że zdecyduję się jakoś odzwierciedlić te aspekty.

Właściwie zajmuję się szablonami stron.

Niektóre strony wymagają wielu wywołań HTTP do interfejsu API REST. Na przykład zaprojektowałem suwak dla mojej strony głównej; można to skonfigurować za pomocą dostosowywania motywu. Normalnie po prostu bym skorzystał get_theme_mod() aby uzyskać tablicę slajdów do moich szablonów stron; w tym SPA stworzyłem punkt końcowy, aby udostępnić go przez API i załadowałem go za pomocą usługi $http AngularJS. To samo dzieje się ze wszystkim, co można skonfigurować za pomocą narzędzia do dostosowywania. Oczywiście spowalnia to proces ładowania.

Chciałbym napisać części w PHP i mieć tam dostępne funkcje WordPressa. Zmniejszyłoby to drastycznie liczbę połączeń, ale nie mogłem znaleźć sposobu, aby to zrobić.

Warto przeczytać!  Jak zmienić rozmiar obrazu Gravatar w WordPress

Powinno to być coś, co udostępnia szablon za pośrednictwem adresu URL; Chcę używać PHP do tego, co jest równe wszystkim stronom i danych kątowych do tego, co by się zmieniło. Każda pomoc jest doceniana.

EDYTOWAĆ
Może problem nie był jasny. Właściwie używam kontrolera do wszystkiego, czego potrzebuję od reszty API. Kontrolery wyglądają jak ten (tak, ten jest kodem kątowym; pominięto obsługę wyjątków, aby go skrócić)

app.controller('allposts', function ($scope, $http) {
    $http.get('wp-json/wp/v2/posts?_embed&per_page=6').then(function (res) {
        $scope.status = res.status;
        $scope.posts = res.data;
    });
})
.controller('slider', function ($scope, $http) {
    $http.get('wp-json/ajst/v0/homeslider').then(function (res) {
        $scope.slides = res.data;
    });
    $scope.interval = 4500;
})
.controller('featuredproducts', function ($scope, $http) {
    $http.get('wp-json/ajst/v0/showcase').then(function (res) {
        $scope.products =  res.data;
    });
})

Wszystkie mają utworzone przeze mnie niestandardowe punkty końcowe, ale znajdują się na jednej stronie szablonu. Chcę użyć pierwszego (tak samo jak podobnych kontrolerów dla pojedynczego postu i strony), ale załadować inne funkcje za pomocą funkcji PHP WordPress.

A więc? Cóż, system routingu sprawia, że ​​to, co następuje, nie jest takie proste. Zwykle posty są wywoływane za pomocą linków bezpośrednich. Napisałem konfigurację kątową, która odzwierciedla strukturę bezpośredniego łącza, więc posty są nadal dostępne przy użyciu tych samych bezpośrednich łączy. Ale jeśli po prostu napiszę częściowy szablon PHP i załaduję go, funkcje WordPress nie są tam zdefiniowane (oczywiście):

$routeProvider.when(" {templateUrl: partials.folder + 'home.html', controller: 'allposts'});

(folder partals.folder został zdefiniowany w pliku functions.php) Home.html to mój plik szablonu ze wszystkimi tymi kontrolerami. Tak więc, czego szukam, to pozwolenie na użycie szablonu PHP rozpoznawanego przez WordPress, ale nie przez bezpośrednie łącze. Dziękuję.

Warto przeczytać!  rozwiązywanie problemów - Obrazy automatycznie usuwane dokładnie po dziewięciu miesiącach... a może moja wizyta wywołała jakiś atak serca?


Źródło