动态登录页面-我这样做正确吗?

时间:2011-09-05 作者:Luth

我想要的:

当用户转到:

www.mydomain。com/详细信息/?pid=12345

他被带到一个登录页面,该页面加载了一个用户指定的模板,用数据库中的详细信息填充该模板,然后将其打印出来。我不希望每个产品都有单独的页面/帖子;我希望每次都从DB动态创建它。(是的,我理解后果。)

我所做的:

创建了一个插件“PD”,允许用户指定模板(例如:"{title}<br>{description}") 并将选项保存为“pd\\U模板”。

创建了一个新的“详细信息”。php在主题中调用“Details”,显示一些特定于主题的标题等,并调用my pd\\u display($_GET[\'pid\']) 显示主要内容。

在WP中创建了一个带有slug“details”的新页面,并将其页面模板设置为“details”

这似乎是一种非常复杂的方法。有人能解释一种更好、更干净的方法吗?

[奖励积分]如果你能告诉我如何使用URL,如

www.mydomain。com/details/12345

而不是pid=12345那就太好了。

1 个回复
SO网友:Milo

另一个选项是挂接wp并检查包含动态pagename的404:

function wpse27761_dynamic_page() {
    global $wp, $wp_query;
    if($wp_query->is_404 ):
        if( strpos($wp->request, \'mypagename\') !== false ):
            $wp_query->is_404 = false;
            //create a post object with your desired output
        endif;
    endif;
}
add_action(\'wp\', \'wpse27761_dynamic_page\');
但可以说这更复杂,我个人会像你现在这样做,尽管我通常只是创建一个页面细节。php模板,因此您不必为页面显式设置模板。

至于重写,根据您当前的方案,它非常简单:

function wpse27657_rewrite(){
    add_rewrite_rule(\'details/([^/]*)/?\', \'index.php?pagename=details&pid=$matches[1]\', \'top\');
}
add_action( \'init\', \'wpse27657_rewrite\' );  

function wpse27657_query_var( $query_vars ){
    $query_vars[] = \'pid\';
    return $query_vars;
}
add_filter( \'query_vars\', \'wpse27657_query_var\' );
这将路由/details/whatever/ 使用pid query var集合查看您的pagename详细信息。只需确保访问永久链接设置页面并保存,以便添加这些新规则。get_query_var(\'pid\') 将在模板中返回查询变量。

结束

相关推荐

Switching Code plugins

我目前正在使用“Wordpress代码片段”为插入到帖子中的代码添加功能。这个插件的工作方式是将代码添加到设置中的插件库中,然后执行类似于[代码:1]的操作(我记不清确切的语法了)我真的不太喜欢它的风格,所以我希望使用谷歌的美化。停用此插件会有什么影响?我会丢失所有的代码片段吗?我是否需要浏览每一篇文章并编辑所有的代码片段(即[代码:1])?