我是WordPress开发新手(我在网页设计/开发方面所做的最多的工作就是创建基本的HTML网站);所以这可能是一个非常简单的问题,但我正在尝试创建一个多页网站。
我想要3个静态页面,一个主页,关于页面和公文包页面,以及一个使用WordPress后端填充的博客。起初,我打算把博客放在一个单独的子域上(例如。blog.example.com
), 然而,我希望在所有页面上填充一个最近帖子的列表,因此我希望将所有帖子保持在同一个域中。
但是,如果我把index.php
, about.php
, portfolio.php
和blog.php
在主题文件夹中;这个index.php
如预期的那样显示,但是,如果我按如下方式创建链接,它将不起作用(所有href
s是空白字符串):
<ul class="nav">
<li><center><a id="nav_bar" href="<?php get_home_template() ?>">Home</a></center></li>
<li><center><a id="nav_bar" href="<?php get_query_template(\'about\') ?>">About</a></center></li>
<li><center><a id="nav_bar" href="<?php get_query_template(\'portfolio\') ?>">Portfolio</a></center></li>
<li><center><a id="nav_bar" href="<?php get_query_template(\'blog\') ?>">Blog</a></center></li>
</ul>
如果我使用以下语法将链接指向wp content文件夹:
<a id="nav_bar" href="<?php bloginfo(\'template_url\') ?>/about.php">About</a>
链接被正确呈现,它指向wp content文件夹中的PHP文件,但当导航到该页面时,它无法调用WordPress函数(即。
get_header()
找不到)。
实现我想做的事情的最佳方式是什么?
最合适的回答,由SO网友:Michael Ecklund 整理而成
您需要了解WordPress模板层次结构是如何工作的。
对于任何想学习WordPress或将当前WordPress经验提升到下一个层次的人来说,了解和理解WordPress模板层次结构的所有不同方面都是非常重要的。
如果您计划整合或组织WordPress网站上的内容,则必须了解WordPress网站如何处理到达并浏览WordPress网站的每个访问者的请求。
Here\'s a list of links which you should read from top to bottom:
- Theme Development
- Template Hierarchy
- Child Themes
- Conditional Tags
- Stepping into
Templates
- The Loop in Action李>
现在是02年款,关于您的特殊情况。。。在WordPress后端管理区域中创建静态空间(domain.com/wp-admin/
). 给他们一个标题,如果想要更改页面的URL,请修改“slug”,并插入一些内容。
请通读我之前的答案中的链接。然后回到这里。
创建文件page.php
把它放进去./wp-content/themes/<your-theme/
目录这将是您网站上所有“静态页面”的默认模板。
现在,如果您想要为特定页面提供不同的功能或布局,您有几个选项。
Option #1) 为每个不同的页面创建单独的文件。您可以通过创建一个名为page-<your-page-slug>.php
或page-<your-page-ID>.php
.
Option #2) 在您的page.php
文件
Example:
if(is_page(\'about\')){// Page with slug of "about".
// do stuff
} elseif(is_page(28)){// Page with ID of "28".
// do stuff
} elseif(is_front_page()){// Home page of your website.
// do stuff
} else{// Any other page.
// do stuff
}
现在,如果你打算或多或少地在布局中硬编码你的链接。。。考虑使用site_url();
. 示例:<a href="<?php echo site_url(\'/about/\'); ?>">About</a>
您可以使用实际的页面信息进行操作。
$page = get_post(28);
if($page){
echo \'<a href="\'.get_permalink($page->ID).\'">\'.$page->post_title.\'</a>\'.PHP_EOL;
}
现在如果你真的想变得花哨。。。你可以使用global variables. Globalling the current post object (可以是当前页)。if(is_page(\'about\')){// Page with slug of "about".
global $post;
echo \'<h1><a href="\'.get_permalink($post->ID).\'">\'.$post->post_title.\'</a></h1>\'.PHP_EOL;
}
还应该注意的是,在设置站点的“博客部分”时,您应该查看WordPress后端管理部分中的阅读设置。WP Admin -> Settings -> Reading
设置首页和帖子页面。帖子页面是您的博客所在的位置。index.php
是博客帖子的默认模板文件。您可以为博客的每个区域设置不同的模板。home.php
将是“主博客页面”的默认模板文件,category.php
将是您的所有博客帖子,这些帖子都有一个指定的类别。tag.php
将是您的所有博客帖子,这些帖子都有一个指定的标签。等
关于这个话题,我不能太深入,因为一个答案中包含的信息太多了。以上链接在我前面的回答中都解释了这一点。我可以向您保证,如果您阅读并理解这些链接,您将很快找到解决方案。