有没有办法创建一个不与站点样式相关联的模板?

时间:2014-03-14 作者:forrest

我最近为一个客户完成了一个WP站点,他们希望能够将一些静态页面添加到没有页眉、页脚和导航的站点。然后,使用iFrame将这些页面引入其他各种站点。作为WP的新手,我不确定如何做到这一点,但我想如果我创建一个不包含页眉的页面模板。php和页脚。php,我可能正朝着正确的方向前进。这是正确的吗?这样做有什么建议?

谢谢

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

不包括header.phpfooter.php 是个坏主意,因为它们通常包含wp_head()wp_footer(), 这些是插件和主题功能所必需的(当然取决于您在站点上的操作)。

第二件事是创建了无效的HTML。

根据您的需要,有多种解决方案。

如果只想删除样式,可以退出队列style.css 在模板的开头(调用之前get_header()):

wp_dequeue_style( \'style\' ); // whatever slug you registered your style.css on
这样,您就不会交付style.css.

但我不认为这是你想要的。如果要删除模板的页眉和页脚(例如顶部的菜单和页脚链接),最好的方法是查看functionget_header( $name ). 如您所见,您可以向其传递一个字符串,当您传递时,将调用另一个php文件。

get_header(); // results in header.php getting loaded
get_header( \'custom\' ); // results in header-custom.php
这和get_footer().

在您的新header-custom.php 您只需添加所需的少量内容,即可确保站点的正确显示和功能。

总而言之,在WordPress中创建页面时,您需要选择新的页面模板,其他一切都会自动运行。

SO网友:Tai Sem

是的,你的方向是对的。您是否调查过:

<?php get_template_part( $slug, $name ); ?> 
法典:http://codex.wordpress.org/Function_Reference/get_template_part

这听起来正是你需要的。

SO网友:gmazzap

向WordPress页面添加样式的正确方法是使用wp_enqueue_style 函数中的函数\'wp_enqueue_scripts\' 行动挂钩。

类似于:

add_action( \'wp_enqueue_scripts\', \'my_styles_function\' );

function my_styles_function() {
  wp_enqueue_style( \'style1\', get_template_directory_uri() . \'/css/style1.css\' );
  wp_enqueue_style( \'style2\', get_template_directory_uri() . \'/css/style2.css\' );
}
这样,调用函数时,所有排队的样式都会正确插入模板中wp_head().此函数调用通常位于header.php 调用时WordPress在当前模板中包含的文件get_header() 作用

如果希望某些页面具有不同的样式,可以为不同的页面排列不同的样式。这可以使用conditional tags.

假设您有一个名为\'special-page.php\'.

使用条件标记is_page_template() 您可以轻松地为该自定义页面模板添加不同的样式。示例:

add_action( \'wp_enqueue_scripts\', \'my_styles_function\' );

function my_styles_function() {
  $uri = get_template_directory_uri();
  if ( is_page_template( \'special-page.php\' ) ) {
    wp_enqueue_style( \'special-style\', $uri . \'/css/special-style.css\' );
  } else {
    wp_enqueue_style( \'style1\', $uri . \'/css/style1.css\' );
    wp_enqueue_style( \'style2\', $uri . \'/css/style2.css\' );
  }
}
作为替代,而不是使用内部样式的完整urlwp_enqueue_style 调用只能使用一次注册样式wp_register_style, 然后根据当前视图对它们进行条件排队。示例:

add_action( \'after_setup_theme\', \'my_register_styles\' );

function my_register_styles() {
  $uri = get_template_directory_uri();
  wp_register_style( \'bootstrap\', $uri . \'/css/bootstrap.css\' );
  wp_register_style( \'common\', $uri . \'/css/common.css\' );
  wp_register_style( \'single\', $uri . \'/css/single.css\' );
  wp_register_style( \'page\', $uri . \'/css/page.css\' );
  wp_register_style( \'contact\', $uri . \'/css/contact.css\' );
  wp_register_style( \'special\', $uri . \'/css/special.css\' );
}

add_action( \'wp_enqueue_scripts\', \'my_styles_function\' );

function my_styles_function() {
  wp_enqueue_style( \'bootstrap\' );
  wp_enqueue_style( \'common\' );
  if ( is_single() ) {
    wp_enqueue_style( \'single\' );
  } elseif ( is_page() ) {
    wp_enqueue_style( \'page\' );
    if ( is_page( \'Contact Page\' ) ) {
     wp_enqueue_style( \'contact\' );
    }
  } elseif ( is_page_template( \'special-page.php\' ) ) {
    wp_enqueue_style( \'special\' );
  }
}
如您所见,当样式已注册时,要将其排队,只需使用wp_enqueue_style 使用样式的id,这是传递给的第一个参数wp_register_style.

我所说的css在javascript文件中也是可行的,在javascript文件中,您需要使用wp_register_script 而不是wp_register_stylewp_enqueue_script 而不是wp_enqueue_style.

请注意,即使在小的可重用部分中单独的css/js可能很有用,但最终会在模板中链接不同的css/js url,其中每个url都需要加载单独的http请求:同一页面中的css/js太多对性能没有好处。

有时,从一页到另一页,您不仅希望更改样式和/或脚本,还希望更改页眉或页脚html标记。

WordPress通过使用参数get_header 和/或get_footer 功能。事实上,您可以创建许多不同的页眉和页脚,为文件添加后缀。E、 g.您可以:header.php, header-single.php, header-special.php...

之后,单曲。php而不是调用get_header() 你可以打电话get_header(\'single\') 并加载header-single.php 而不是header.php (如果header-single.php 在主题或子主题中找不到文件)。

这种技术与条件资产加载相结合,可以在WordPress中从一页到另一页深度定制方面。

查看this question/answer 用于更复杂/动态加载页眉/页脚文件。

结束

相关推荐

Admin Theme customization

我遵循wordpress codex网站上关于通过插件创建管理主题的说明。我激活了插件,但我的样式表没有包含在<head>.. 这是我的代码:add_action( \'admin_init\', \'kd_plugin_admin_init\' ); add_action( \'admin_menu\', \'kd_plugin_admin_menu\' ); function kd_plugin_admin_init() { /* Register