特定のレイアウトを持つsingle.phpファイルがあるとしましょう(グラフィックを多用する)。ユーザーが提供されたリンクをクリックしたときにのみ呼び出される、同じページの一種のプレーンテキストバージョンを作成します。 single-plaintxt.phpを作成できますが、クリックしたときにそのファイルを使用してのみページコンテンツをロードするリンクや関数を生成する方法を教えてください
ありがとうございます。
あなたはこれのようにそれをすることができます:
//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');
そのquery_varに基づいてテンプレートのリダイレクトを追加します。
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_print_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_print = $ post_idでリンクを作成することだけです。
お役に立てれば
@ Bainternetの答えを少し修正しました。
Post_typeのスイッチを使用して、異なるテンプレートにリダイレクトすることさえ可能です。デフォルトでは、wordpressはmy_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
}
}
}
解決策をありがとう、Bainternet。 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;
?>