WordPress 文章内链短代码

WordPress

如果你认真写博客的话肯定会有在文章内引用你站内其他文章的时候。这个时候我们一般都是直接用一个 a 标签来搞定,虽然这样已经解决了问题,但是我们可以有更好的方案。

因为要调用的是站内文章,如果我们使用 get_posts 的话可以很好的调用文章的元信息,包括浏览量,缩略图之类的,甚至文章摘要(如果你有的话)。再加上可以自定义样式,这个内链看上去可要比普通的 A 标签高大上多了。比如下面的:

我们可以用短代码的方式添加文章 ID 来直接调用文章,非常方便,下面给出实现方法。

下面的代码加入到functions.php

//正确获取日志摘要,get_the_excerpt()优化
/********************/
function get_post_excerpt($post, $excerpt_length = 160)
{
    if (!$post) {
        $post = get_post();
    }
    $post_excerpt = $post->post_excerpt;
    if ($post_excerpt == '') {
        $post_content = $post->post_content;
        $post_content = do_shortcode($post_content);
        $post_content = wp_strip_all_tags($post_content);
        $post_excerpt = mb_strimwidth($post_content, 0, $excerpt_length, '…', 'utf-8');
    }
    $post_excerpt = wp_strip_all_tags($post_excerpt);
    $post_excerpt = trim(preg_replace("/[\n\r\t ]+/", ' ', $post_excerpt), ' ');
    return $post_excerpt;
}
/********************/
//正确获取日志摘要,get_the_excerpt()优化
/*文章插入内链*/
/********************/
function pure_posts($atts, $content = null)
{
    extract(shortcode_atts(array('ids' => ''), $atts));
    global $post;
    $content = '';
    $postids = explode(',', $ids);
    $inset_posts = get_posts(array('post__in' => $postids));
    foreach ($inset_posts as $key => $post) {
        setup_postdata($post);
        $content .= '<div class="graf--mixtapeEmbed"><a href="' . get_permalink() . '" target="_blank" rel="noopener"><span class="markup--strong markup--mixtapeEmbed-strong">' . get_the_title() . '</span><em class="markup--em markup--mixtapeEmbed-em">' . get_post_excerpt() . '</em></a><div class="markup--meta">发布于' . human_time_diff(get_the_date('U')) . '前' . custom_the_views(get_the_ID()) . '次浏览</div></div>'; } 
    wp_reset_postdata(); 
    return $content; }
    add_shortcode('pure_post', 'pure_posts'); /*使用 get_post_excerpt()输出文章简介*/ 
/********************/ /*文章插入内链*/

其中,增加了获取日志摘要,get_the_excerpt()优化代码。你可以根据你自己的需要来调整代码,也可以自己自定义 CSS 样式,下面是我正在使用的 CSS 样式:

.graf--mixtapeEmbed a{text-decoration:none!important;-webkit-transition:opacity .2s ease 0s;transition:opacity .2s ease 0s}
.graf--mixtapeEmbed{position:relative;overflow:hidden;box-sizing:border-box;margin:20px 0;padding:24px;max-height:280px;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.15),0 0 1px rgba(0,0,0,.15);color:rgba(0,0,0,.6)}
.markup--mixtapeEmbed-strong{display:block;margin-bottom:8px;color:rgba(0,0,0,.8);font-size:20px;line-height:1.2}
.markup--em{display:block;margin-bottom:8px;font-style:normal!important;font-size:14px}
.markup--meta{color:rgba(0,0,0,.5);font-size:9pt}
@media screen and (max-width:640px){.graf--mixtapeEmbed{padding:9pt}

至于调用就非常简单了,直接使用短代码[pure_post ids=文章 ID 号,文章 ID 号]即可,注意并不是文章的别名或自定义的,而是文章真实的 ID 号。

如果你不是在文章内容中,而是在其他地方想调用,则可使用do_shortcode('[pure_post ids=文章 ID 号,文章 ID 号]')来调用。

良好的内链结构有助于网站 SEO,如果对 SEO 有关注可以好好关注下内链建设。

© 声明:本站原创文章采用BY-NC-SA创作共用协议,转载时请标明本文地址;非原创(转载)文章版权归原作者所有。

RECENT POSTS

Stay Hungry. Stay Foolish.

数据库查询次数:11次,页面生成时间:0.030秒。