【问题标题】:Wordpress include custom pageWordpress 包含自定义页面
【发布时间】:2011-01-09 10:28:33
【问题描述】:

我确信这是一个简单的问题。但是如何让 Wordpress 在启动时忽略尝试加载页面或帖子,而是加载我的自定义页面?什么时候在 Wordpress 引导过程中决定要加载哪个 php 页面?

我会有以下网址:

bt.local/wp/ads/1

并希望加载一个名为 ads.php 的 php 页面,并使用 adid = 1 加载广告。

解决这个问题的最佳方法是什么? (没有称为广告的帖子,也没有称为广告的页面)。

谢谢!

韩国

约瑟夫

【问题讨论】:

    标签: php wordpress wordpress-theming


    【解决方案1】:

    您可以为此使用 template_redirect 操作 - 示例:

    add_action('template_redirect', 'my_template_loader');
    
    
    function my_template_loader() {
        if( get_query_var('adid') ) {
           locate_template(array("your-custom-page.php"), true);
        }
    }
    

    编辑:

    除此之外,您还需要一些新的重写规则来添加您的自定义 url - 基本信息在这里http://codex.wordpress.org/Function_Reference/WP_Rewrite

    你的规则可能看起来像这样:

    $newrules['ads/(\d*)$'] = 'index.php?pagename=ads&adid=$matches[1]';
    

    这需要设置一个名为 ads 的“占位符”页面,除此之外,您还必须像这样注册新查询 var adid

    add_filter('query_vars', 'add_adid_var');
    function parameter_queryvars($qvars) {
        $qvars[] = ' adid';
        return $qvars;
    }
    

    【讨论】:

    • 像魅力一样工作!我使用全局 $wp_query 而不是 $post 来提取页面名称:$wp_query->get('pagename')。然后我找到了模板并加载了我的自定义 ads/index.php 文件。非常感谢!
    • 刚刚注意到我的 $wp_query 在向 url 添加 ID 时不起作用。例如 bt.local/wp/ads/1 - 1 打破了它。如果我按照您的建议使用 $post,我在任何地方都找不到页面名称“ads”。我该怎么做?
    • 刚刚试了一下!效果很好!由于重写规则,我添加了一个名为 ads 的页面,该页面接收了 adid。非常感谢!
    【解决方案2】:

    <?php include('custompage.php'); ?>???

    【讨论】:

    • 感谢您的回答。但问题更多与处理变量和 wordpress 处理页面加载的方式有关。例如 - 如果我在 WP Admin 中创建了一个名为 About 的页面,我会在输入 URL/WP/About 时看到 About 页面。但是如果我有一个自定义页面,我想在输入 URL/WP/Add 时被调用,我如何让 Wordpress 找到那个?如果我输入一个不是在 Wordpress 中创建的页面,它会说“找不到页面”。我希望它澄清了我的问题。祝你有个愉快的夜晚!
    • 如果它存在于 wordpress 正在查找的目录中,它会显示出来,即使不是用 wordpress 创建的
    猜你喜欢
    • 1970-01-01
    • 2019-04-07
    • 2016-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-10
    • 2014-04-23
    • 2011-06-28
    相关资源
    最近更新 更多