是否使用不同的模板加载帖子?

时间:2011-02-17 作者:RodeoRamsey

比如说我有一张单人床。具有特定布局(图形密集型)的php文件。我想为同一个页面创建一种纯文本版本,只有当用户单击提供的链接时才会调用该页面。我可以创建单个plaintxt。php,但我如何生成一个链接和/或函数,在单击时仅使用该文件加载页面内容?

谢谢

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

您可以这样做:

    //add my_print to query vars
function add_print_query_vars($vars) {
    // add my_print to the valid list of variables
    $new_vars = array(\'my_print\');
    $vars = $new_vars + $vars;
    return $vars;
}

add_filter(\'query_vars\', \'add_print_query_vars\');
然后基于该查询变量添加模板重定向:

add_action("template_redirect", \'my_template_redirect_2322\');

// Template selection
function my_template_redirect_2322()
{
    global $wp;
    global $wp_query;
    if (isset($wp->query_vars["my_print"]))
    {
        include(TEMPLATEPATH . \'/my_print_themplate.php\');
        die();

    }
}
在主题目录中创建一个名为“my\\u print\\u themplate.php”的新文件,并将此代码粘贴到其中。

<?php
    define(\'WP_USE_THEMES\', false);
    echo "<h1>printer friendly version:</h1>\\n";
    query_posts(\'p=\'.$_GET[\'pid\']);
    if (have_posts()){
        while ( have_posts() ) { the_post();
            the_content();
        }
    }else{
    echo \'nothing found\';
    }
?>
现在你要做的就是创建一个链接?my\\u print=常规单循环中的$post\\u id。

希望这有帮助

SO网友:Daishi

我只是稍微修改了@Bainternet的答案。

使用post\\u类型上的开关,甚至可以重定向到不同的模板。默认情况下,wordpress将忽略my\\u print参数并照常运行。

add_action("template_redirect", \'my_template_redirect_2322\');

// Template selection
function my_template_redirect_2322()
{
    global $wp;
    global $wp_query;

    if (isset($wp->query_vars["my_print"]))
    {
        switch ($wp_query->post->post_type) {
        case "page" :
            include(TEMPLATEPATH . \'/my_print_page_themplate.php\');
            die();
        case "portfolio" :
            include(TEMPLATEPATH . \'/my_print_portfolio_themplate.php\');
            die();
        case "post" :
            include(TEMPLATEPATH . \'/my_print_post_themplate.php\');
            die();
        default:
            // load as usual
        }
    }
}

SO网友:Taruc

谢谢你的解决方案,班纳特。正如RodeoRamsay所报告的那样,它从默认的帖子类型中引入了多篇帖子,因此我将其与我的自定义帖子类型配合使用,如下所示:

<?php
    define(\'WP_USE_THEMES\', false);
    //echo "<h1>printer friendly version:</h1>\\n";
    setup_postdata($_GET[\'pid\']); 
    while ( have_posts() ) : the_post();
            the_content();

    endwhile;
?>

结束