WordPress定时自动删除过期友情链接

随着大家网站流量权重的提升,相信很多站长都在寻找属于自己的盈利模式。其实很大一部分个人网站是无法实现盈利的,比如说本站代码狗博客,只能做到收支平衡。为了保障服务器的正常运转,很多站长就会用到出售友情链接的方式来换取一定的利润,一般来说一个权 1 的网站想要保证不亏钱还是很简单的。随着友情链接越来越多,我们可能会忘记哪个友链该过期了,因此,为了服务于懒人,我结合 wordpress 函数写下的这个利用定时任务与 wp_delete_link 函数自动删除过期友情链接的方法。

wp_delete_link 函数

官方描述是:从数据库中删除指定 id 的链接。

返回值始终为真。

奇怪的是,我测试了下这个函数,WordPress 提示说找不到这个函数,最后我是通过 wp_delete_link 函数的构造内容来实现的,也就是说,参考官方实现办法自己写了个 wp_delete_link 函数。

构造的 wp_delete_link 函数如下:

  1. function wp_delete_link( $link_id ) {
  2.     global $wpdb;
  3.     do_action( 'delete_link', $link_id );
  4. 
    
  5.     wp_delete_object_term_relationships( $link_id, 'link_category' );
  6. 
    
  7.     $wpdb->delete( $wpdb->links, array( 'link_id' => $link_id ) );
  8. 
    
  9.     do_action( 'deleted_link', $link_id );
  10. 
    
  11.     clean_bookmark_cache( $link_id );
  12. 
    
  13.     return true;
  14. }

建议我们自己写的时候不要使用 wp_delete_link 这个相同的名字,不然可能会出错。很明显,这个函数有两个钩子动作,一个是在删除之前触发,一个是在删除之后触发,我们使用的时候就不需要这两个动作了,删除它。然后在后台新建一个链接,记得填上过期时间。
WordPress定时自动删除过期友情链接-云模板日期格式不限制,我提供的代码只支持这种格式,要修改格式请修改下面的日期格式化字符串。然后通过如下代码查询所有链接来删除链接。

  1. <?php
  2. function cron_dellink(){
  3. //得到所有链接分类,并遍历链接分类
  4. $categories=get_categories(array( 'type' => 'link'));
  5. foreach ( $categories as $categorie ) {
  6.        //根据分类id遍历链接详情
  7. 	$bookmarks = get_bookmarks( array(
  8. 		'orderby'        => 'name',
  9. 		'order'          => 'ASC',
  10. 		'category'	=> $categorie->term_id
  11. 	));
  12.        foreach ( $bookmarks as $bookmark ) {
  13.            //判断下有没有过期日期数据
  14.             if($bookmark->link_notes){
  15.                  date_default_timezone_set('PRC');
  16.                  if(strtotime($bookmark->link_notes)<time()){
  17.                    //这里的内容可以单独写成上面的函数
  18.                     global $wpdb;
  19.                     wp_delete_object_term_relationships( intval($bookmark->link_id), 'link_category' );
  20.                     $wpdb->delete( $wpdb->links, array( 'link_id' => intval($bookmark->link_id) ) );
  21. 	            clean_bookmark_cache( intval($bookmark->link_id) );
  22.                  }
  23.              }
  24.        }
  25. }
  26. }
  27. ?>

我将过期日期填在备注里,使用 link_notes 可以获取。不出意外,上面的代码可以删除时间超过现在的链接,下面添加定时任务。

  1. //定时任务
  2. add_filter( 'cron_schedules', 'salong_add_every_time' );
  3. function salong_add_every_time( $schedules ) {
  4.     $schedules['every_time'] = array(
  5.         'interval'  => 600,
  6.         'display'   => __( '每隔10分钟', 'salong' )
  7.     );
  8.     return $schedules;
  9. }
  10. if ( ! wp_next_scheduled( 'salong_add_every_time' ) ) {
  11.     wp_schedule_event( time(), 'every_time', 'salong_add_every_time' );
  12. }
  13. add_action( 'salong_add_every_time', 'cron_dellink' );

定时任务在前面也讲过,可以参考下 WordPress 使用 WP-Cron 定时任务删除从未登录的用户,效果还不错。别问我为什么过了 20 分钟都没有删除链接,那是因为这 20 分钟内都没人访问你的网站,cron 定时任务是有人访问才会触发的!

原创文章,作者:DavidWu,如若转载,请注明出处:https://www.davidwu.net/archives/93777

WordPress安全防护插件
服务项目 服务内容 收费标准(元)
开发定制 WordPress主题/插件开发定制 (以最终需求为准)
主题/插件汉化 汉化团队WordPress主题/插件,翻译率95% (以标的主题/插件的句子数量为准)
服务器环境配置 基于您现有服务器,搭建配置网站运行环境,结合我们多年来实战经验,可完美支持WordPress等PHP程序运行,并配置伪静态规则、优化目录权限等问题。服务器我们强烈推荐使用Linux系统。 100元/次
网站托管 若贵站目前尚无技术人员,无法完成服务器环境配置,可选择我们的网站托管服务,直接交付正常运行的WordPress站点,并且无需担心服务器的后续维护工作,一切都由我们来帮您完成。 标配套餐:1000元/年/站点 高配套餐:联系客服获取
网站加速优化 从服务器后端配置优化到WordPress数据库缓存、前端页面缓存、JS和CSS压缩合并,全方位优化网站加载速度,实现秒开。(此服务仅针对(云)服务器/VPS) 500元/次(仅站内优化200元/次)
主题配置 本站所有主题均支持,可快速实现,若有任何问题可以咨询客服解决,若您希望我们提供配置服务,可选购此服务。 英文主题安装 60元/次 汉化主题安装 30元/次
HTTPS配置 HTTPS已经不断普及,并且有着更高的安全性以及SEO上的优待。该服务收取的为服务费,SSL证书产生的费用请自行承担。 100元/次
网站搬家 迁移网站所有文件和数据库信息、网站相关配置的调整、以及迁移中的疑难问题故障排除。 标准收费:500元/次 若网站数据量大,需协商
网站运维 提供整站的运维服务,保证网站正常运行。包含:网站故障定位及排除、网站数据备份和恢复、网站攻击及木马等问题的处理等 标准收费:2000元/年 IP 5000以上需协商

发表评论

电子邮件地址不会被公开。 必填项已用*标注

51建站客服微信二维码
点击这里购买