后端代码形式的永久链接结构?

时间:2013-06-11 作者:user1627363

我有这个permalink structure: /%year%/%monthnum%/%postname%/

我想要的是,在后端输出一篇帖子的链接,让用户输入一个帖子名,这将自动引导到该帖子(如果存在,否则404)。。。

所以,我有这个:

function transform_pseudo_anchor_wpse_101201($match) {
  if (isset($match[1])) {
    return \'(link: <a href="http://example.com/\'.sanitize_title_with_dashes($match[1]).\'" title="\'.$match[1].\'">\'.$match[1].\'</a>)\';
  }
}

$content = preg_replace_callback(
  \'%\\(link: ?(.*?) ?\\)%\', 
  \'transform_pseudo_anchor_wpse_101201\', 
  $content
); 
echo $content; 
当然,这不起作用。。。但是我怎样才能让它工作呢?所以我想得到确切的链接,如果有人链接到一个帖子,存在。。。举个例子吧。com,年份/月份和postname必须到来。。。

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

你的代码可以创建链接,WordPress应该努力找到正确的帖子,但它并不能获得完整的永久链接。要做到这一点,您需要查询该帖子的数据库,并在找到永久链接时构造一个永久链接。

function transform_pseudo_anchor_wpse_101201($match) {
  global $wpdb;
  if (isset($match[1])) {
    $name = sanitize_title_with_dashes($match[1]);
    $p = new WP_Query(
      array(
        \'name\'=>$name,
        \'post_type\' => \'post\',
        \'posts_per_page\' => 1,
        \'suppress_filters\' => true,
        \'ignore_sticky_posts\' => true
      )
    );
    if (!empty($p->posts[0])) {
      $link = get_permalink($p->posts[0]);
      return \'(link: <a href="\'.$link.\'" title="\'.$match[1].\'">\'.$match[1].\'</a>)\';
    } else {
      return \'nada\';
    }
  }
}

结束

相关推荐

Changing H1 to Normal Links

完成本教程之后--Showing all the posts in one page? -- 我能够在一个标签页中显示所有帖子链接。示例:http://blogote.com/tag/facebook/现在,我在这些标记页中有几个H1/H2标题——超过100个。如何将这些H1标题转换为普通标题?代码如下:$title = the_title( \'<h1 class=\"\' . esc_attr( $post->post_type ) . \'-title entry-title\">