WordPress自带文章链接以嵌入式卡片展现功能,不过样式比较单一。那么我们给wordpress添加一个短代码调用功能,使用短代码添加卡片式内链并适度美化。

一、效果对比

WordPress自带的卡片式文章链接

罗技G300S鼠标开箱评测

优化后代短代码卡片式文章链接

罗技G300S鼠标开箱评测 罗技G300S鼠标开箱评测 双十一在京东购买了罗技G300S鼠标,京东物流很给力,一天就到了。于是给大家带来开箱评测。 鼠标吸引我的是其九键可编程, 如何实现可以在文末查看教程。 首先晒订单图,花了好几张券。 才88元买到了鼠标... 时间:2020/11/12 分类:WP建站 阅读:93

可以看出短代码卡片式引用加载速度快,且更加简洁精美。

二、实现方式

1、添加函数

在functions.php内添加函数

// 获取特色图片地址
function jsk_the_thumbnail_src() {
  global $post;
    if ( get_post_meta($post->ID, 'thumbnail', true) ) { //如果有缩略图,则显示缩略图
      $image = get_post_meta($post->ID, 'thumbnail', true);
        return $image;
    } else {
      if ( has_post_thumbnail() ) { //如果有缩略图,则显示缩略图
        $img_src = wp_get_attachment_image_src( get_post_thumbnail_id( $post->ID ), "Full");
        return $img_src[0];      
        } else {
            return get_template_directory_uri().'/img/thumbnail.png'; //文章中没有图片就设置默认图片
        }
    }
}
/*卡片式文章内链功能*/
function yx_embed_posts( $atts, $content = null ){
extract( shortcode_atts( array(
'ids' => ''
),
$atts ) );
global $post;
$content = '';
$postids = explode(',', $ids);
$inset_posts = get_posts(array('post__in'=>$postids));
$category = get_the_category();
foreach ($inset_posts as $key => $post) {
setup_postdata( $post );
$content .= '<span class="embed-card">
<span class="embed-card-img">
<a target="_blank" href="' . get_permalink() . '"><img alt="'. get_the_title() . '" src="'. jsk_the_thumbnail_src() .'"></a>
</span>
<span class="embed-card-info">
<a target="_blank" href="' . get_permalink() . '">
<span class="card-name">'. get_the_title() . '</span>
</a>
<span class="card-abstract">'.wp_trim_words( $post->post_content, 100, '...' ).'</span>
<span class="card-controls">
<span class="group-data"> <i>时间:</i>'. get_the_time('Y/n/j') .'</span>
<span class="group-data"> <i>分类:</i><a target="_blank" href="'.get_category_link($category[0]->term_id ).'">'. $category[0]->cat_name .'</a></span>
<span class="group-data"> <i>'. _get_post_views() .'</i></span>
<span class="group-data"> <i>评论:</i>'. get_comments_number() .'</span>
</span>
</span>
</span>
<link rel="stylesheet" href="'. get_template_directory_uri() .'/css/embed-card.css"/>';
}
wp_reset_postdata();
return $content;
}
add_shortcode('yx_embed_post', 'yx_embed_posts');

function get_post_views($post_id)
{
    
    $views = get_post_meta($post_id, 'views', true);
    if ($views == '') {
        return 0;
    } else {
        return $views;
    }
}

上面代码中的调用自定义的函数,如阅读量等,需要根据主题自行修改。

2、添加样式

在主题style.css文件内添加

.embed-card,span.embed-card {
display: block;
position: relative;
width: 620px;
padding: 9px;
margin: 30px auto;
border: 1px dashed #d4d4d4;
overflow: hidden;
max-width: 90%;
}
.embed-card:hover,span.embed-card:hover {
box-shadow: 1px 1px 8px #eee;
}
.embed-card a,span.embed-card a {
padding-right: 0;
text-decoration: none;
color: #313131;
}
.embed-card span,span.embed-card span {
display: block;
padding-right: 0;
}
.embed-card-category {
display: inline-block;
height: 20px;
line-height: 20px;
padding: 0 5px;
font-size: 12px;
}
.embed-card-category {
background-color: #6a99d8;
background-color: rgba(43,110,200,0.8);
color: #fff;
}
.embed-card-category:hover {
background-color: #d5e2f4;
background-color: rgba(43,110,200,1);
}
.embed-card .embed-card-category {
position: absolute;
top: 9px;
left: 0;
padding-right: 5px;
}
.embed-card-img {
float: left;
margin-right: 14px;
}
.embed-card-img img {
width: 180px;
height: 138px;
}
.embed-card-info {
padding-right: 4px;
overflow: hidden;
}
.embed-card-info .card-name {
font-size: 16px;
height: 44px;
line-height: 22px;
margin-bottom: 10px;
margin-top: 7px;
overflow: hidden;
text-overflow: ellipsis;
whitewhite-space: normal;
font-weight: bold;
}
.embed-card-info .card-tags {
height: 20px;
overflow: hidden;
}
.embed-card-info .card-tags>span {
display: inline-block;
padding: 0 7px;
margin-right: 8px;
height: 16px;
border: 1px solid #eee;
line-height: 16px;
color: #999;
font-size: 12px;
}
.embed-card-info .card-tags span.tag-noborder {
border: 0;
}
.embed-card-info .card-abstract {
height: 36px;
line-height: 18px;
margin: 5px 0;
font-size: 12px;
color: #666;
overflow: hidden;
margin-bottom: 20px;
}
.embed-card-info .card-controls {
overflow: hidden;
line-height: 28px;
}
.embed-card-info .card-controls .group-data {
float: left;
margin-right: 10px;
color: #999;
font-size: 12px;
}
.embed-card-info .card-controls .group-data i {
margin-right: 5px;
font-style: normal!important;
}
.embed-card-info .card-btn-deep {
float: rightright;
width: 68px;
height: 28px;
margin-left: 10px;
line-height: 28px;
text-align: center;
font-size: 12px;
background-color: #ff5e5c;
color: #fff;
}
.embed-card-info .card-btn-deep:hover {
opacity: .9;
}
@media only screen and (max-width:700px) {
span.embed-card {
width: 95%;
padding-left: 0;
padding-right: 0;
}
.embed-card .embed-card-img {
width: 24.27184%;
margin-left: 9px;
}
.embed-card .embed-card-img img {
width: 100%;
height: auto;
}
.embed-card .embed-card-info {
overflow: visible;
padding: 0 9px;
}
.embed-card .embed-card-info .card-name {
margin-top: 1%;
margin-bottom: 1.5%;
}
}

3、使用方法

在文章内使用短代码【yx_embed_post ids=2500】(换成英文[ ])

4、后续优化

在经典编辑器内添加快捷标签

/*添加文本编辑自定义快捷标签按钮*/
 add_action('after_wp_tiny_mce', 'bolo_after_wp_tiny_mce');
 function bolo_after_wp_tiny_mce($mce_settings) {
 ?>
 <script type="text/javascript">
 QTags.addButton( 'card-refer', '卡片引用', '', "" );
 function bolo_QTnextpage_arg1() {
 }
 </script>
 <?php
 }

三、参考资料

https://www.mbxzb.com/blog/file/wordpress/10672.html

https://www.jsksky.com/beautifying-the-inner-chain-of-wordpress-articles.html

Invitation
QQ Group
1095632335

created:04/01/2020

Welcome to the Group

Use this card to join us and participate in a pleasant discussion together .

Welcome to JISHUSONGSHU Group,wish you a nice day .