php - WordPress插件开发: Deliver other page to browser than requested in URL

标签 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');

?>

有什么解决办法吗?

最佳答案

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

function conditional_change_content_by_id( $query ){
    if( $query->is_page( YOURPAGEID ) && $query->is_main_query() && (isset($_POST["pageid"]) && !empty($_POST["pageid"])) ) {
        $query->set( 'page_id', $_POST["pageid"] );
    }
}
add_action( 'pre_get_posts', 'conditional_change_content_by_id' );

关于php - WordPress插件开发: Deliver other page to browser than requested in URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54492993/

相关文章:

javascript - 来自外部 php 文件的 Pubnub 回复

php - Codeigniter 数据库根据多个值加入两列

php - 通过 PHP 和 MySqL 进行数据替换触发

php - 查询特定自定义帖子类型时出现问题

php - 如何重定向除登陆页面之外的子目录?

javascript - 在 PHP 中动态添加数据到 HTML Table

PHP - 如果 URL 中有此内容,则不显示 div

php - 是否可以在没有 htaccess 文件的情况下重写 URL?

php - WordPress wpdb->准备奇怪的错误

php - 这是 WordPress 中的 .htaccess 代码。有人可以解释它是如何工作的吗?