立即注册

微信登录

只需一步,快速开始

QQ登录

只需一步,快速开始

无量觉社区



会员资源切换至【手机版】
开启左侧

[wordpress] WordPress实现文章收藏功能

[复制链接]
发表于 2025-7-28 08:41:52 | 显示全部楼层 |阅读模式

最近在开发我们自己的吉他资源平台-乐瑶吉他的时候,用到了文章收藏的功能,之前做这个功能的时候都是适用的现成的插件,这次不想用那么多的插件了,所以就直接自己用代码写了一下这个文章收藏功能。

首先将下面的代码放到您的functions.php文件中。

/**
 * WordPress日记——文章收藏功能
 * https://www.wp-diary.com/749.html
 */
function post_shoucang(){
    if(!get_current_user_id()){
        exit(json_encode(['msg'=>'请先登录才能收藏哦!']));
    }
    $id = $_POST["id"];
    $meta = get_post_meta($id,'shoucang',true);
    $shoucang1 = explode(',',get_post_meta($id,'shoucang',true));
    $shoucang =  array_filter($shoucang1); 
    $user = get_current_user_id();
    if(in_array($user,$shoucang)){ 
        foreach($shoucang as $k=>$v){
            if($v==$user){
                unset($shoucang[$k]);
            }
        }
        update_post_meta($id, 'shoucang', implode(",",$shoucang));
        exit(json_encode(['msg'=>'已取消收藏']));
    }else{
        array_push($shoucang,$user);
        update_post_meta($id, 'shoucang', implode(",",$shoucang));
        exit(json_encode(['msg'=>'收藏成功']));
    }   
}
add_action('wp_ajax_post_shoucang','post_shoucang');
add_action('wp_ajax_nopriv_post_shoucang','post_shoucang');

其次,是在文章页中放入下面的html代码(收藏按钮)

<?php
$shoucang1 = explode(',',get_post_meta(get_the_ID(),'shoucang',true));
$shoucang = array_filter($shoucang1);
$user = get_current_user_id();
?>
<a class="shoucang <?php if(in_array($user,$shoucang)){ foreach($shoucang as $k=>$v){if($v==$user){echo "on";}}} ;?>" data-id="<?php the_ID();?>" href="javascript:;">
<span>收藏</span>
</a>

样式方面就自己定义吧,其中,如果文章已经收藏过了,会在收藏按钮的a标签上多一个on的类,你可以使用这个类定义收藏过的样式;

最后,还需要有一段JS文件,你可以放到您的footer.php中。

<script> $('a.shoucang').click(function(){
var id = $(this).data("id");
$.ajax({
url: "/wp-admin/admin-ajax.php",
type:'post',
dataType:'json',
data:{action:'post_shoucang',id:id},
success: function(data){
layer.alert(data.msg, function(){
location.reload();
});
}
});
});</script>

为了更好的体验效果,收藏成功以及取消成功的消息提示使用了layer这个jQuery弹出层插件,所以,您还需要在主题中引入这个框架的文件(下载地址:http://res.layui.com/static/download/layer/layer-v3.1.1.zip),下载后把整个文件夹放到您的主题目录中,然后在主题头部引入layer.js

通过以上方法已经完成了对文章的收藏及取消收藏功能(只有登录用户才能收藏)。收藏后大家肯定还需要获取出来每个用户自己收藏的文章的列表,以往使用插件获取收藏列表的时候样式都是固定的,自定义起来就要改插件,但是使用上面的方法,获取收藏列表的时候你想展示什么样的列表就看你自己了。获取方法如下:

<?php
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
$args=array(
'cat' => 5, // 分类ID,如果不需要限定是哪个分类,可以不写这个条件
'showposts' => 16,
'paged' => $paged,
);
query_posts($args);
if(have_posts()) : while (have_posts()) : the_post();
?>
<?php
$shoucangmeta1 = explode(',',get_post_meta($id,'shoucang',true));
$shoucangmeta = array_filter($shoucangmeta1);
?>
<?php if(in_array(get_current_user_id(),$shoucangmeta)){ ?>
<li>
<a class="videolistbox" href="<?php%20the_permalink();?>" title="<?php the_title();?>">
<div class="thumbbox">
<?php $thumburl = wp_get_attachment_image_src( get_post_thumbnail_id(get_the_ID()), array(400,270));?>
<img class="defaultthumb" src="<?php%20echo%20$thumburl[0];?>" alt="<?php the_title();?>" title="<?php the_title();?>">
<i class="videobutton fa fa-caret-square-o-right"></i>
</div>
<h3><?php the_title();?></h3>
<div class="videolisttag">
<span>
<i class="fa fa-calendar" aria-hidden="true"></i>
<?php the_time('m,d');?>
</span>
<span>
<i class="fa fa-eye" aria-hidden="true"></i>
<?php post_views(' ', ' 次'); ?>
</span>
<div class="clearfix"></div>
</div>
</a>
<a class="posteditbutton shoucang" data-id="<?php the_ID();?>" href="javascript:;">取消收藏</a>
</li>
<?php } ?>
<?php endwhile; else : ?>
<div class="sp-mod-empty">
<img src="<?php%20bloginfo('template_directory');%20?>/images/empty.png" class="empty-images">
<p class="empty-txt">您还没有收藏任何弹唱视频哦~</p>
</div>
<?php endif;?>
<div class="clearfix"></div>
<div class="page_navi text-center">
<?php par_pagenavi(9); ?>
</div>
<?php wp_reset_query(); ?>

仔细看上面的代码,其实就是普通的循环获取文章,只不过在循环中多了个判断,判断当前用户的id是否在获取到的文章的"shoucang"这个字段里,如果在则显示出来。


主题推广




回复

使用道具 举报

 楼主| 发表于 2025-7-28 08:44:31 | 显示全部楼层

如何为WordPress插件添加文章推荐功能

引言:
WordPress是一种强大的内容管理系统(CMS),广泛用于创建各种类型的网站和博客。其中,插件是为了扩展WordPress功能而存在的。在现代的博客和新闻网站中,文章推荐是一项非常重要的功能。本文将介绍如何在WordPress插件中添加文章推荐功能,并提供相应的代码示例。

第一步:创建一个新的WordPress插件
首先,我们需要创建一个新的WordPress插件。在WordPress的插件目录(wp-content/plugins/)中创建一个新的文件夹,用于存放插件的所有文件。

然后,在该文件夹中创建一个新的PHP文件,命名为plugin-name.php(插件的名称替换为实际的插件名称)。这个文件将成为插件的主要文件,负责定义插件的名称、版本、作者等信息,并加载其他必要的文件。

以下是一个示例的plugin-name.php的代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

<?php

/*

Plugin Name: my-plugin

Description: This is my plugin.

Version: 1.0

Author: My Name

*/

// 加载其他必要的文件

require_once plugin_dir_path(__FILE__) . 'includes/recommendation.php';

// 声明插件的激活/停用钩子

register_activation_hook(__FILE__, 'my_plugin_activate');

register_deactivation_hook(__FILE__, 'my_plugin_deactivate');

请注意,上述代码中的require_once语句引入了一个名为recommendation.php的文件。在下面的步骤中,我们将在includes文件夹中创建这个文件,并在其中添加推荐功能的代码。

第二步:添加文章推荐功能
现在,我们将在recommendation.php文件中添加文章推荐功能的代码。

首先,我们需要通过下面的代码片段,在WordPress后端的文章编辑页面添加一个复选框用于选择是否推荐该篇文章:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

// 在文章编辑页面添加文章推荐的复选框

function add_recommendation_meta_box() {

add_meta_box(

'recommendation_meta_box',

'文章推荐',

'render_recommendation_meta_box',

'post',

'side',

'default'

);

}

add_action('add_meta_boxes', 'add_recommendation_meta_box');

// 渲染文章推荐的复选框

function render_recommendation_meta_box($post) {

wp_nonce_field(basename(__FILE__), 'recommendation_nonce');

$value = get_post_meta($post->ID, '_is_recommended', true);

$checked = $value ? 'checked' : '';

echo '<label for="is_recommended">';

echo '<input id="is_recommended" name="is_recommended" type="checkbox" value="1" ' . $checked . '>';

echo '推荐这篇文章';

echo '</label>';

}

然后,在保存文章时,我们需要将用户的选项保存到数据库中。在recommendation.php文件中添加以下代码:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

// 保存文章推荐的值到数据库

function save_recommendation_meta_box_data($post_id) {

if (!isset($_POST['recommendation_nonce']) || !wp_verify_nonce($_POST['recommendation_nonce'], basename(__FILE__))) {

return;

}

if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) {

return;

}

if (!current_user_can('edit_post', $post_id)) {

return;

}

$is_recommended = isset($_POST['is_recommended']) ? sanitize_text_field($_POST['is_recommended']) : '';

update_post_meta($post_id, '_is_recommended', $is_recommended);

}

add_action('save_post', 'save_recommendation_meta_box_data');

现在,我们已经成功地为WordPress插件添加了文章推荐功能。用户可以在后端的文章编辑页面选择是否推荐文章,并将选择保存到数据库中。

第三步:显示推荐文章
现在,让我们在前端显示推荐的文章。我们可以使用WordPress的查询功能,找到所有被推荐的文章,并将它们显示在网站的任何位置。

以下是一个示例的代码片段,用于在主题的页面模板中显示推荐的文章:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

// 显示推荐的文章

function display_recommended_posts() {

$args = array(

'meta_key' => '_is_recommended',

'meta_value' => '1'

);

$posts = get_posts($args);

if ($posts) {

echo '<ul>';

foreach ($posts as $post) {

echo '<li><a href="' . get_permalink($post->ID) . '">' . get_the_title($post->ID) . '</a></li>';

}

echo '</ul>';

} else {

echo '没有推荐的文章。';

}

}

在需要显示推荐文章的页面中,调用上述函数即可显示推荐的文章列表。

总结:
通过上述步骤,我们学习了如何为WordPress插件添加文章推荐功能。我们使用了WordPress提供的插件开发API和查询功能,并创建了一个简单的复选框用于选择是否推荐文章,并成功地将选择保存到数据库中。最后,我们使用查询功能在网站的前端显示推荐的文章。

希望通过本文的指导,你能够轻松地为你的WordPress插件添加文章推荐功能,并使你的网站更具吸引力和用户友好性

回复 支持 反对

使用道具 举报

游客
回复
您需要登录后才可以回帖 登录 | 立即注册

切换至【手机版】|主站|Archiver| Amituforum 无量觉社区

JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!JS of wanmeiff.com and vcpic.com Please keep this copyright information, respect of, thank you!

|网站地图

GMT+8, 2026-2-4 11:59 , Processed in 0.263521 second(s), 11 queries , Redis On.

Powered by Discuz! X3.4

© 2001-2013 Discuz Team.

快速回复 返回顶部 返回列表