将WP创建的页面重定向到主题文件夹内手动创建的PHP文件

时间:2018-08-21 作者:Maykel Esser

我在Wordpress的网站上有一些名为“诊断”的页面。实际上,这些页面是空的。

然而,WP的标准功能不允许您做您想做的事情。我需要在这些诊断上做一些计算和函数,我可以用简单的PHP从WP中完成。

但是,我如何才能使用WordPress将页面“/诊断/流程诊断”重定向到/wp内容/主题/神话主题/流程诊断。php“?

1 个回复
SO网友:Santiago Cerro López

也许你可以用query_vars 过滤器和parse_request 行动

add_action(\'init\', \'initInternalWPRewrite\', 10);
// Add your rewrite rule, you don\'t need to create a wordpress page
function initInternalWPRewrite () {
    add_rewrite_rule(\'^diagnostics/?$\', \'index.php?diagnostics=1\', \'top\');
}

add_action(\'init\', \'rewriteRulesCacheInit\', 10);
// This method is useful to avoid manual flush rewrite cache
function rewriteRulesCacheInit () {
    if (!get_option(\'rewrite_rules_cache\')) {
        add_option(\'rewrite_rules_cache\', true);
    }
}
// With this method you don\'t need to flush cache
add_action(\'init\', \'rewriteRulesFlushCache\', 20);
function rewriteRulesFlushCache () {
    if (get_option(\'rewrite_rules_cache\')) {
        flush_rewrite_rules();
        delete_option(\'rewrite_rules_cache\');
    }
}
// Add your custom query var
add_filter(\'query_vars\', \'queryVars\');
function queryVars ($query_vars) {
    $query_vars[] = \'diagnostics\';

    return $query_vars;
}

// Render your PHP content, please, avoid include PHP or if you want to include PHP file, ensure is defined ABSPATH constant to avoid direct execution
// REMEMBER: exit or die, if you don\'t do this, WordPress will be loaded.
add_action(\'parse_request\', \'renderDiagnosticPage\');
function renderDiagnosticPage ($wp_query) {
    if (array_key_exists(\'diagnostics\', $wp_query->query_vars)) {
        //your code
        exit();
    }
    return;
}
更多信息:

查询变量筛选器:https://codex.wordpress.org/Plugin_API/Filter_Reference/query_vars

分析请求操作:https://codex.wordpress.org/Plugin_API/Action_Reference/parse_request

添加\\u重写\\u规则方法:https://codex.wordpress.org/Rewrite_API/add_rewrite_rule

结束

相关推荐

如何编辑特定帖子的php/html?

我是Wordpress的新手,但我对html/php编码很在行,希望在我的一些帖子上创建自定义表单。我的网站当前正在本地主机上运行。我觉得自己很傻,因为我一直在/var/html 我花了很长时间试图找出我可以在哪里编辑一个名为“我的个人资料”的页面。我想看到一些自动生成的my_profile.php 文件之类的。页面本身标识为page_id=10 , 但我什么都没看到page_id 在文件结构中。“我的个人资料”代码在哪里?