WordPress,将变量从page.php传递到header.php

时间:2012-05-29 14:15:04

标签: wordpress wordpress-theming

我尝试在WordPress中创建一个主题,并允许用户使用某些页面模板,在标题中加载幻灯片或显示标题。

让我们说,我有一个名为Portfolio的模板名称和另一个名为Portfolio with Slide-show In Head的页面模板。

我可以在portfolio.phpportfolio-with-slide.php内发送header.php中的变量以决定要显示的内容,还是让我为第二个选项创建第二个标头使用get_header('title')get_header('slide')

将需要的人加载到模板文件中

最好的方法是什么?

4 个答案:

答案 0 :(得分:2)

我个人使用第二个选项 - 为第二个选项创建第二个标题,然后将需要它的标题加载到包含get_header('title')get_header('slide')的模板文件中。 就代码可维护性而言,这是最好的方法。

答案 1 :(得分:2)

正确的解决方案是编写一个过滤器来替换标题:

function this_is_the_title_now( $title ) {
    // can return un-altered $title or can use fancy logic here
    return( "This is the new title." );
}

add_filter( 'the_title', 'this_is_the_title_now', 10, 2 );

这可以放在你主题的functions.php中,也可以放在page-whatever.php中。

答案 2 :(得分:0)

因为 wordpress 5.5 get_header 已准备好使用 $args 参数:

https://developer.wordpress.org/reference/functions/get_header/

您可以像这样将参数放入 get_header 中:

get_header( 'yourheadername', [ 'header_arg' => 'XYZ' ] );(如果您使用的是自定义的 header.php 文件,在本例中为:header-yourheadername.php

或默认 header.php 文件:

get_header( null, [ 'header_arg' => 'XYZ' ] );

然后在你的头文件中你可以使用:

<?php echo $args['header_arg']; ?>if 内或任何你想要的 :-)

答案 3 :(得分:0)

您可以使用 set_query_var 将变量发送到您的 header.php 文件或任何模板部件文件。

例如,在您的作品集幻灯片模板 (portfolio-with-slide.php) 文件中:

//portfolio-with-slide.php 
set_query_var('includeSlideshow', true); 

然后在您的 header.php 文件(或模板部件文件)中:

//Header.php
$slideshowHeader = get_query_var('includeSlideShow');
//If variable exists and is boolean true
if($slideshowHeader !== null && $slideshowHeader === true) {
  //code to include slideshow in header
}