Wordpress插件开发:将其他页面交付给浏览器,而不是URL中的请求

时间:2019-02-02 12:15:45

标签: php wordpress

我想编写一个wordpress插件,该插件能够向浏览器传递URL要求之外的其他页面。插件不应将浏览器转发到另一个URL(浏览器的URL不应更改)。

让我们假设我们有2个wordpress页面:“ page1”和“ page2”。浏览器将从表单发送一些后数据到www.example.com/wordpress/page1。该插件检查发布数据,并决定交付page2而不是page1。

Wordpress提供全局变量$ pagename,该变量存储URL中请求的页面的名称。不幸的是,wordpress不在乎是否将$ pagename设置为另一个值(如我的代码所示)。它仍然提供page1而不是page2 ...

<?php
/*
Plugin Name: example plugin
Description: This is just an example.
*/

function msu_wp_loaded() {
  global $pagename;

  if($pagename == "page1" && some_other_condition ) {
    $pagename = "page2";
  }

}
add_action('wp_loaded','msu_wp_loaded');

?>

对此有什么解决办法吗?

1 个答案:

答案 0 :(得分:2)

我将创建两个不同的页面,每个页面具有不同的内容。然后,我将使用pre_get_posts获取一个 postid 参数。这样,您就不必处理重定向。

    return \App\Project::with(["projectLeaders" => function($query){
            $query->where('Lastname', 'Smith') //check lastname
        }])->join('companies', 'company_id', '=', 'companies.id')
                            ->join('project_status', 'project_status.id', '=', 'projects.status_id')
                            ->select('companies.*', 'project_status.name AS statusName', 'projects.*');