我正在尝试做的是在wordpress中转换我的单页设计,我认为能够在单独的页面中编辑,添加和修改页面的不同部分会很好。单页网站将通过菜单(ID为主)订购。
在我使用get_template_part
的wp-codex之后,它应该正常工作,因为它应该:
将模板部件加载到模板中(标题,侧边栏,页脚除外)
get_header
被跳过,但get_footer
被排除,网站呈现错误。
前page.php文件
$pages = wp_get_nav_menu_items('main');
global $post;
foreach ($pages as $post) {
$post = get_post($post->object_id);
if($post->post_type != "page") continue;
setup_postdata( $post );
$postName = (locate_template('page-' . $post->post_name . '.php') == '') ? null : $post->post_name;
get_template_part('page', $postName);
}
wp_reset_postdata();
这是一个错误吗?或者我做错了什么?实现这一目标的最佳方法是什么?
答案 0 :(得分:0)
如果你的get_template_part()不起作用,那么问题可能是在主题中没有名为page.php的文件,检查这个文件。
答案 1 :(得分:0)
对于它的价值,我经常会跳过一些WP助手并更直接地工作,但不是流氓。这是我图书馆的片段:
/** Get core data for a WP post/page using ID
* @param $id : wp post/page ID
* @return array
*/
function wp_get_single_post_basic($id){
$post = get_post($id, ARRAY_A);
$ret = array();
$content = $post['post_content'];
// FILTER via WP
$content = apply_filters('the_content', $post['post_content']);
$ret['title']= $post['post_title'];;
$ret['content']= $content;
$ret['link'] = $post['post_name'];
$ret['edit_link'] = '<a href="'.get_edit_post_link($id).'" title="edit">edit</a>';
return $ret;
}
该功能以非常容易管理的方式分解内容并生成编辑链接(在调用脚本中为此构建bool)。也格式化内容。
因此,抓取并排序所需的ID,然后在一个页面的ID循环中运行它。然后,所有内容将通过页面/帖子/任何内容(自定义分类法FTW)进行隔离。
如果您已准备好ID并进行了分类以及准备好的html / css,我可以删除此功能并在一小时内完成一页的工作。对于生产线工作而言,这种类型的帮助程序非常棒 - 对于您希望在循环外部某些奇怪位置以某种奇怪方式放置特定帖子/页面的站点也是如此。
如果你有问题/脚本让我知道,几年前我没有使用它,几年前写过...
答案 2 :(得分:0)
我认为您使用全局$post
时遇到问题,并在菜单对象的$post
循环中存储foreach
变量。我想可能是模板部件调用错误的原因。
我建议您删除全局$post
声明,reset_postdata
以及setup_postdata
,因为您没有在循环中使用全局,您是&#39;只是命名它。
您正在从菜单中获取$post
对象,因此您似乎不需要在您想要使用&#34;循环时最常使用的全局或其他功能风格&#34;没有post_id
的模板标记,例如the_permalink()
或the_title()
。
答案 3 :(得分:0)
我最终将默认的page.php模板复制为page-page.php
并将其加载如下:
$postName = (locate_template('page-' . $post->post_name . '.php') == '') ? 'page' : $post->post_name;
然后在刚刚加载page.php
page-page.php
中