在执行PHP后访问$POST

时间:2014-11-05 作者:myol

我正在使用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的内容?但我可以在加载初始页面后执行此操作吗?我只有自定义帖子类型的帖子以这种方式显示(设置动画)。

1 个回复
最合适的回答,由SO网友:iyrin 整理而成

我相信AngularJS插件通过使用the_content1 滤器他们使用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_script2.

这是将JavaScript链接到WordPress生成的页面的推荐方法。

如果您确定必须在页面加载后向PHP发出AJAX请求,那么您确实需要学习AJAX in Plugins « WordPress Codex. 请注意wp\\u ajax操作的变化,这取决于用户是否登录(已验证)以及面向查看器的ajaxurl。

总结这一过程:

您必须确定如何调用脚本。wp_enqueue_script() 建议使用

  • 。php中,添加一个由AJAX请求触发的动作挂钩。你可以用一WordPress › AngularJS for WordPress « WordPress Plugins零四. 如果脚本中的操作名为“foo”,则如下所示add_action( \'wp_ajax_foo\', foo_callback );
  • 。php,编写回调函数“foo\\u callback”。在这个函数中,可以包含任何需要的PHP函数。例如,如果您只需要显示单个帖子的内容,并且您从脚本中获得了帖子ID,那么您可以使用get_post_field( \'post_content\', $post_id ) 以显示它
  • 这个由白字和空格选择的答案是一个很好的例子,它解释了这个过程是如何工作的:https://stackoverflow.com/a/15315024/2407742

    希望这能为您指明正确的方向,以便您在遇到困难时可以搜索或提出更具体的问题。

    结束