带有WordPress站点的自定义PHP应用程序

时间:2012-12-13 作者:Chud37

我创建了一个新的“页面模板”(这可能不是正确的方法,但这是我工作的方式),并使用该模板创建了一个新页面。在我制作的页面模板(PHP文件)中,我使用了大量PHP来实现页面功能,就像它有一个简单的登录和从SQL表查看信息一样。

问题是,我需要能够将$\\u GET数据发送到页面。我可以发送帖子,但不能得到,我不知道URL是什么。

例如,我希望有干净的URL(这就是我设置wordpress的目的)

i、 e.:

领域com/教学门户/mygetdata

页面模板的名称是教学门户,我想mygetdata 输入PHP。但目前,在教学门户网站之后通过的任何内容都会导致404页面。

我怎样才能做到这一点?

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

假设您有一个带有slug“教学门户”的页面,该插件会为该页面添加一个重写规则,允许在URL中的该页面之后添加一个部分,即您所称的“mygetdata”。我把它叫做“教训”。

<?php
/**
 * Plugin Name: Custom PHP app on teaching-portal page
 * Plugin URI: http://wordpress.stackexchange.com/questions/75991
 */

// Flush rewrite rules on plugin activation
register_activation_hook(__FILE__, \'wpse75991_activate\');
function wpse75991_activate()
{
    wpse75991_add_rewrite_rule();
    flush_rewrite_rules();
}

// Flush rewrite rules on plugin deactivation
register_deactivation_hook(__FILE__, \'wpse75991_deactivate\');
function wpse75991_deactivate()
{
    flush_rewrite_rules();
}

// Add a custom rewrite rule for the teaching portal section
add_action(\'init\', \'wpse75991_add_rewrite_rule\');
function wpse75991_add_rewrite_rule()
{
    $pagename = \'teaching-portal\'; // Slug
    add_rewrite_rule(
        $pagename.\'/?([^/]*+)\',
        \'index.php?pagename=\'.$pagename.\'&lesson=$matches[1]\',
        \'top\'
    );
}

// Register the custom query var so WP recognizes it
add_filter(\'query_vars\', \'wpse75991_add_query_var\');
function wpse75991_add_query_var($vars)
{
    $vars[] = \'lesson\';
    return $vars;
}
激活此插件后,您应该能够访问页面模板中的课程变量。下面是一个简单的例子:

$lesson = get_query_var(\'lesson\');

if (empty($lesson))
{
    // Show all lessons
}
else
{
    // Show a single lesson
    var_dump($lesson);
}
另请参见Rewrite API 在法典中。

结束