我现在正在为我在Wordpress中创建的所有页面使用不同的页面模板。我正在为一家公司使用WordPress for Intranet Portal。 对于我构建的所有页面,我需要不同的PHP代码。
100页网站的正确方法是什么?为所有页面创建自己的页面模板,并将其放到主题/.../页面模板或创建一个页面:
<?php
switch($current_page_name) {
case "about-us";
include(site_url('/pages/about-us.php'));
break;
case "contact-form";
include(site_url('/pages/contact-form.php'));
break;
}
?>
但是如何获得$ current_page_name变量?例如我有页面: http://192.168.210.140/sales-funnel/todolist/ 我认为,需要:
case "sales-funnel/todolist/";
是否正确,创建 themes \ twentyten \ page-templates \ one-column.php :
<?php
/**
* Template Name: Main template one-column
*/
add_action('template_redirect','my_redirect');
function my_redirect(){
get_header();
echo '
<div id="container" class="one-column">
<div id="content" role="main">
';
global $wp; //global $wp object it will return us request
global $wpdb;
echo $wp->request;
switch($wp->request) {
case "sales-funnel/todolist":
status_header( 200 );
include (TEMPLATEPATH . '/pages/sf/todolist.php');
break;
case "sales-funnel/add-deal":
status_header( 200 );
include (TEMPLATEPATH . '/pages/sf/add-deal.php');
break;
}
echo '
</div><!-- #content -->
</div><!-- #container -->
';
get_footer();
exit;
}
my_redirect()
?>
并使用它例如50页,只需在这个文件中添加一个case语句?
答案 0 :(得分:1)
你可以使用template_redirect hook:
add_action('template_redirect','my_redirect');
function my_redirect(){
global $wp; //global $wp object it will return us request
switch($wp->request) {
case "sales-funnel/todolist":
status_header( 200 );
include (TEMPLATEPATH . '/my-page-template.php');
break;
// Todo add more cases here
}
exit;
}
如果您想更改每个页面的标题,那么您也可以使用wp_title过滤器。
答案 1 :(得分:1)
首先,如果你真的有100个不同的模板用于一个网站,你应该考虑一下。你真的需要那么多模板吗?通常,Wordpress网站在大多数情况下不应该有超过十个模板。也许在网页设计上有些不对劲,或者选择Wordpress并不是你项目的最佳选择。
任何方式,正确的继续进行方式如下所述:创建一个模板文件,顶部有注释命名模板,并在编辑页面时在模板下拉列表中选择它。尝试只有少数几个,正如你所说的“带侧边栏的页面”,“没有侧边栏的页面”等应该足够了。
然后,使用页面内容构建整个页面。您可以执行一些shortcodes以显示特定的块,或者custom fields可以将一些布尔值发送到模板(在侧边栏中显示或不显示此内容等)。使用Custom Field Suite或Advanced Custom Fields等插件,您可以轻松地为特定模板创建字段组。最后,对于小部件,您可以使用Widgets Context来隐藏/显示特定部分的小部件。