我正在创建自己的wordpress主题,它有点不同,因为它不会有单个页面(或至少,没有单个页面可以访问)。整个网站只包含主页(带循环)和以前的帖子页面。
我想链接到循环内的各个帖子,例如site.com#post-124或site.com/paged=5#post-214。
我已经创建了一个执行此操作的函数:
function getPermalink($id,$postsPerPage) {
$postNumber = Get_Post_Number($id);
//a function that get's the post number based on
//the chronical order of published posts.
$page = floor(($postNumber - 1) / $postsPerPage);
$url = get_option('home');
if($page > 0) {
$url .= '/?paged=' . ($page + (1 - floor($page / 5)));
}
$url .= '#post-' . $id;
return $url;
}
你可以在这里看到它:http://mijnrealiteit.nl(之前的帖子页面被一个infite滚动插件取代)。
这很有效,但是当我开始添加帖子时它会中断,因为之前的所有帖子都会转移到更远的页面(这会使链接无效)。
我认为有两种可能的解决方案:
有更好的选择吗?我确定这已经解决了,我找不到它。
答案 0 :(得分:1)
我被朋友推向了正确的方向,我使用选项2轻松地构建它:
getPermalink函数现在变得更加简单:
function getPermalink($id) {
return get_option('home') . '/?f=' . $id;
}
我没有进行任何自定义重定向,我只是在主页上检查了GET请求中传递的'f':
$perma = $_GET['f'];
if(isset($perma) && !is_paged()) {
$customposts = get_posts('p=' . $perma );
foreach( $customposts as $post ) :
setup_postdata($post); ?>
//load the post
<?php endforeach;
}?>
如果确实如此,将使用Wordpress的get_posts函数获取帖子。我还检查已经提供的帖子的(正常)循环:
<?php while (have_posts()) : the_post();
if(get_the_ID() != $perma) { ?>
//load the post
<?php } endwhile; ?>