我正在使用javascript(angular.js)在wordpress站点中进行页面动画页面转换。我没有足够的经验让网站完全内置angular,然后使用angular(JSON?etc)显示帖子等来访问php。
相反,我让初始wordpress PHP生成角度元素;
模板角度测试。php
<div ng-app="scdApp" id="ang-container">
<div ng-view ng-controller="ViewCtrl" ng-class="animationStyle" class="view"></div>
</div>
然后访问单独的PHP文件以显示内容等。
应用程序。js(部分)
AppModule.config(function($routeProvider) {
$routeProvider
.when(\'/page:pageNumber\', {
templateUrl: function ($routeParams) {
return \'/...../html/page\' + $routeParams.pageNumber + \'.php\';
},
controller: "PageCtrl"
})
.otherwise({
redirectTo: "/page1"
});
});
目前,当角度转换异步发生时(AJAX?)我可以通过粗略地添加到其中一个PHP文件来访问wordpress PHP函数;
第1页。php
require \'./..../wp/wp-load.php\';
$post = new StdClass;
$post->ID = $ID_I_wish_to_set;
然而,我觉得这实际上是在加载wordpress两次,我必须为每个页面加载它。在“初始”模板角度测试之后,是否有任何方法可以从这些“单独”的PHP文件访问wordpress PHP内容。php文件已加载?
从评论来看,我似乎需要使用JSON获取wordpress的内容?但我可以在加载初始页面后执行此操作吗?我只有自定义帖子类型的帖子以这种方式显示(设置动画)。
最合适的回答,由SO网友:iyrin 整理而成
我相信AngularJS插件通过使用the_content
1 滤器他们使用post-meta来确定什么时候应该在客户端加载内容,但您可以编写自己的函数来确定何时合适。这样可以过滤内容,而不是创建新的$post对象。
下面是插件的一个示例WordPress › AngularJS for WordPress « WordPress Plugins
function angularFilter( $content ) {
global $post;
$meta = get_post_meta($post->ID, \'angularjsLoad\', true);
$meta = intval($meta);
if($meta){
$content = \'<ng-post-content id="\'.$post->ID.\'"></ng-post-content>\';
}
return $content;
}
add_filter(\'the_content\', \'angularFilter\', 10, 3);
我想您将需要过滤内容,使其与此行类似,只是为您的项目使用了适当的指令
$content = \'<ng-post-content id="\'.$post->ID.\'"></ng-post-content>\';
此外,您可能应该使用wp_enqueue_script
2.
这是将JavaScript链接到WordPress生成的页面的推荐方法。
如果您确定必须在页面加载后向PHP发出AJAX请求,那么您确实需要学习AJAX in Plugins « WordPress Codex. 请注意wp\\u ajax操作的变化,这取决于用户是否登录(已验证)以及面向查看器的ajaxurl。
总结这一过程:
您必须确定如何调用脚本。wp_enqueue_script()
建议使用脚本需要定义动作、要传递的数据(例如,post ID)和要传递到的AJAX url函数中的li>
。php中,添加一个由AJAX请求触发的动作挂钩。你可以用一WordPress › AngularJS for WordPress « WordPress Plugins零四. 如果脚本中的操作名为“foo”,则如下所示add_action( \'wp_ajax_foo\', foo_callback );
函数中的li>。php,编写回调函数“foo\\u callback”。在这个函数中,可以包含任何需要的PHP函数。例如,如果您只需要显示单个帖子的内容,并且您从脚本中获得了帖子ID,那么您可以使用get_post_field( \'post_content\', $post_id )
以显示它这个由白字和空格选择的答案是一个很好的例子,它解释了这个过程是如何工作的:
https://stackoverflow.com/a/15315024/2407742希望这能为您指明正确的方向,以便您在遇到困难时可以搜索或提出更具体的问题。