2011-11-06 81 views
0

我創建了自己的wordpress主題,它有點不同,因爲它不會有單個頁面(或者至少不會有單個頁面可到達)。整個網站只包含主頁(包含循環)和以前的帖子頁面。如何在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滾動插件替換)。

這是有效的,但是當我開始添加帖子時會中斷,因爲之前的所有帖子都會移回到更遠的頁面(這會導致鏈接無效)。

我看到它的方式有兩種可能的解決方案:

  1. 更改permalinkstructure向後顯示分頁(所以x.com/paged=231成爲第一個「之前的」頁面然而,這不是用戶友好的。 。
  2. 只用ID生成鏈接,讓WordPress的手柄自定義重定向頁面在那個時間當前點。

有沒有更好的方法?我敢肯定,這是已經解決的地方,我真不敢找不到它

回答

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; ?>