0
我发布在SO导致我的问题是关于AngularJS,而不是Wordpress。 我正在使用AngularJS(1.6.4)和WP REST API构建单页应用程序。一切都很好,但我现在正在寻找解决方案来镜像帖子的永久链接设置。AngularJS:镜像WordPress的永久链接设置
我想延长REST API来显示它们,然后注入$http
服务为我模块的config
app.config(function ($routeProvider, $locationProvider) {
$routeProvider.when('/', {templateUrl: partials.folder + 'home.php', controller: 'allposts'});
var tags = [
'%year%',
'%monthnum%',
'%day%',
'%hour%',
'%minute%',
'%second%',
'%post_id%',
'%postname%',
'%category%',
'%author%'
];
var urlvars = '';
var inj = angular.injector(['ng']);
var $http = inj.get("$http");
$http.get('wp-json/permalink_api/v0/settings').then(function (res) {
var settings = res.data;
var permalink_settings = settings.permalink_settings;
//This array contains the permalink settings
var arr = settings.permalink_settings.permalink_structure.split('/');
//I'll now generate a string using that array...
for (var i = 0; i<arr.length; i++) {
if (arr[i] == "") {
arr.splice(i,1);
i=i-1;
} else {
if ((ix = tags.indexOf(arr[i]))> -1) {
var cleantag = ":" + tags[ix].replace(/%/g, "");
urlvars += '/' + cleantag;
} else {
urlvars += '/' +arr[i];
}
}
}
}).then(function() {
//...and create a route based on permalink setting
$routeProvider.when(urlvars, {templateUrl: partials.folder + 'post.html', controller: 'singlepost'});
});
$locationProvider.html5Mode(true);
})
此代码是好的,一旦应用程序是满载,但遭受的事实$http
服务在这个阶段还没有准备好。会发生什么,它会加载整个应用程序,然后开始应用此配置,这意味着json数据加载太迟。最糟糕的后果是我无法直接从浏览器栏访问路线,而只能通过应用程序链接访问路线。
我想使用拦截器不会改变这一点。镜像永久链接结构对搜索引擎优化非常有用,所以即使创建SPA,我也想实现这一目标,不要提及它会像用经典主题一样提供对用户的完全控制。
意思是要达到这个目的吗?谢谢。
编辑 .htaccess设置设置良好;在任何情况下定义任何静态路由的路由。