将页面模板用于自定义$_Get内容

时间:2014-03-30 作者:Ollicca Mindstorm

我有一个产品列表,我希望能够单击一个链接,进入一个包含该产品更多信息的页面,我可以使用$_GET 像这样:

$s .= \'<p><a href=\'.get_site_url().\'/wp-content/plugins/real-wp-shop/test.php?info=\'.$value->id.\'>Details</a></p>\';
然后进来test.php 我有:

if (isset($_GET[\'info\'])) {
    echo \'string\';
}
很明显,我只是得到了一个空白页string 写在上面,但我想知道是否可以在这个页面上使用页面temnplate,所以我会string 写在页面模板的区域(例如,如果我在常规页面上有一个post循环,我将在哪里获得输出)?

2 个回复
SO网友:cybmeta

您可以使用template_include 筛选以从主题加载模板文件:

add_filter( \'template_include\', \'my_page_template\', 99 );
function my_page_template( $template ) {

    if ( isset( $_GET[\'info\'] ) &&  $_GET[\'info\'] == \'some_value\' ) {
         $new_template = locate_template( array(\'my-template.php\' ) );
         if ( \'\' != $new_template ) {
             return $new_template ;
         }
     }
     return $template;
}
如果要在任何其他位置检查tempalte文件,可以。例如,您可以检查主题/子主题是否有要加载的模板文件,如果没有,请从插件路径加载默认模板文件:

add_filter( \'template_include\', \'my_page_template\', 99 );
function my_page_template( $template ) {

    if ( isset( $_GET[\'info\'] ) &&  $_GET[\'info\'] == \'some_value\' ) {

        $new_template = locate_template( array(\'my-template.php\' ) );

        if ( \'\' != $new_template ) {
            //my-template.php file has been found in theme/child theme folder
            $template = $new_template ;
        } else {
            //load template callback when the file dosen\'t exist in theme
            $template = PATH_TO_MY_PLUGIN . \'/my-template.php\';
        }

    }

    return $template;

}
另请参见template_redirect 滤器

SO网友:TomC

是的,你可以。您可以创建要使用的页面模板,并在其中使用以下内容:

if (isset($_GET[\'info\'])) {
  echo $_GET[\'info\']
}
复制默认页面模板,并在此基础上创建新模板。确保您还更改了“模板名称:XXXXX”的值。模板应使用新代码上方/下方的get\\u header和get\\u footer命令作为将网站模板应用于页面的模拟。

创建新页面并将模板应用于该页面。

如果您遇到困难,请告诉我,一旦我了解您的问题所在,我会再次指导您。

结束

相关推荐

WordPress后台:如何在Pages-->All Pages下隐藏某些特定页面

我有一些带有短代码的页面,我不想让我的客户看到带有短代码的页面。是否有方法将这些页面隐藏在“页面-->所有页面”下,但应显示在“菜单”下。有没有插件可以实现这一点?我已经找过了,但没有找到。