固定链接必须总是指向单个帖子页面吗?

时间:2012-02-15 作者:leonbloy

假设我有一个每月只有几篇帖子的博客,并且没有评论,我不想在单个帖子页面中显示帖子,但总是“在上下文中”(比如说,与当月或一周内的帖子一起显示)。为了实现这一点,我需要将permalinks与片段标识符(#)一起使用。我想知道这是否得到支持,或者是否有人可以向我指出一些资源或讨论。

已编辑:我在自己的回答中公布了我的实施细节。

3 个回复
最合适的回答,由SO网友:fuxia 整理而成

有两个名为\'pre_post_link\'\'post_link\'. 他们的第一个论点——你可以改变——是permalink。所以…

add_filter( \'pre_post_link\', \'wpse_42406_change_permalink\', 10, 2 );

function wpse_42406_change_permalink( $permalink, $post )
{
    // change the permalink, let it point to an archive etc.
    return $permalink;
}
…将更改输出。

在你的循环中,你可能会使用类似于…

<li id="post-<?php the_ID(); ?>">
然后,您的永久链接可以指向您选择的存档页plus#post-$post->ID. 例如:

http://example.com/2012/04/#post-42

SO网友:Jeremy Jared

只需打开主题文件并从标题中删除a标记。

示例:在索引中。php文件,如果您有:

<h2>
<a href="<?php the_permalink() ?>" rel="bookmark" title="Permanent Link to <?php the_title(); ?>">
    <?php the_title(); ?></a>
</h2>
它将成为:

<h2 class="entry-title"><?php the_title(); ?></h2>

SO网友:leonbloy

为了防止一些访问者发现这些信息有用,我发布了我的工作实现。它需要一个小插件。

在这个实现中,永久链接将显示每月存档,但url仍将是“完整的”,即包括帖子标题,这样一来,1)如果我希望以后更改此模式,而不破坏永久链接,我就有更多的自由,2)我有访问的有意义的统计数据(我可以从日志中知道访问了哪些帖子)。

在管理页面中,我指定此permalinks结构:

/%year%/%monthnum%/%postname%  
eg: http://example.com/myblog/2012/01/sample_post
但最终permalink将采用以下形式:

http://example.com/myblog/2012/01/sample_post#post-234
片段标识符由插件中的以下挂钩添加:

/* adds hash */
function hjg_change_permalink( $permalink, $post ) {
    //if(strpos($permalink,\'#\')) return $permalink;
    return $permalink . "#post-" . $post->ID;   
}

add_filter( \'post_link\', \'hjg_change_permalink\', 100, 2 );
我还在插件中添加了以下内容,因此permalinks尽管看起来像是单个帖子的url,但被解释为归档文件:

function hjg_parse_request( $wp ) {
   if(! isset($wp->query_vars)) return;
   if(! isset($wp->query_vars[\'year\'])) return;
   $wp->query_vars[\'name\']=\'\'; // remove post name
}

add_action( \'parse_request\', \'hjg_parse_request\');
我的主题继承自标准twenty-eleven, 已在中向每个帖子发布“post NNN”idcontent.php :

   <article id="post-<?php the_ID(); ?>" <?php post_class(); ?>>
如果您正在使用其他主题,则需要添加或修改此主题。

请记住,要做到这一点,您的每月档案不应分页:您每月需要有最多的帖子数量,并在管理页面的“每页帖子”中设置该值。(我还调整了index.php 我的主题中的文件,以便首页显示较少的帖子)。

结束