如果找不到请求的URL,如何调用特定函数?

时间:2014-06-01 作者:deb0rian

我的网站完全基于API,并根据API数据构建页面/帖子。我想创建一些类似PHP magic function的东西\\uu在请求URL时调用特定函数将返回404,但要在它发生之前执行,这样我就可以发送API请求并动态创建页面,并将以前丢失的页面返回给用户。

有哪些选择?我知道wp\\u insert\\u post是通过PHP添加新post的方法,但在抛出404来启动wp\\u remote\\u请求之前,我找不到如何连接到初始请求。

基本上,我想我错过了它的过滤器/操作名称。

谢谢你的帮助。

2 个回复
最合适的回答,由SO网友:Abhineet Verma 整理而成

只需使用template\\u redirect filter对您在wordpress中得到的请求执行检查。

add_filter(\'template_redirect\', \'my_404_override\' );

function my_404_override() {
    global $wp_query;

    if (!$wp_query->post) {         // Check if any post is found. If not its 404.
        status_header( 200 );
        $wp_query->is_404=false;

        // Create post object
        $my_post = array(
          \'post_title\'    => \'My post\',
          \'post_content\'  => \'This is my post.\',
          \'post_status\'   => \'publish\',
          \'post_author\'   => 1,
          \'post_category\' => array(8,39)
        );

        // Insert the post into the database
        $post_id = wp_insert_post( $my_post );      // Add new post in to the system
        wp_redirect( get_permalink( $post_id ) );   // Finally redirect it to the post.
    }
}
这将为您创建一个新帖子(&;也会将用户重定向到该帖子。嗯,坦率地说,这是一个完成任务的补丁,但它达到了目的。

SO网友:Rarst

如果您想在WP搅动查询并得出404之后添加此逻辑,但在它输出404错误页面之前添加此逻辑,那么您可能需要在template-loader.php 文件

大部分内容是关于确定适合当前请求的条件的模板文件。您可能需要调整模板文件选择,也可能需要调整mainWP_Query 对象和标头。

这似乎有点牵扯在飞行中。如果你真的不需要持久的post,你最好创建自定义重写规则,而不要完全遵循“post”逻辑。

结束

相关推荐

页面源代码包含一个使页面不安全的http项;但在php文件中,它被写为HTTPS!

我似乎无法理解这一点!我设置了我的站点(https://goinspire.com/secure-payment/) 是https,但我看到的不是锁符号,而是警告符号。根据http://www.whynopadlock.com/ 问题是标题(http://malsup.github.io/jquery.cycle2.js). 我更改了标题。php将该url设置为https(https://malsup.github.io/jquery.cycle2.js), 但由于某些原因,它不会更新页面源。这是适用的标