当前位置: 首页 > news >正文

如何给wordpress首页自动显示文章内容的第一个图片

敏捷个人手机应用中使用到的数据来源于wordpress中,因为自己写的页面,所以可以自己写代码获取文章内容的第一个图片作为文章缩略图来显示,这样用户看到首页时图文并茂,感觉会好一些。

现在后台简单的使用PHP编写,使用正则表达式获取第一个图片地址

    //格式化博客列表内容
    private function formatIndexContent($blogs) {
        //strip $rs content
        foreach ($blogs as $blog) {
            preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', $blog->post_content, $images);
            $match = $images[1];
            if (count($match) == 0) {
                $blog->pic = "";
            }
            else {
                $blog->pic = $match[0];     
            }
            $blog->post_content = mb_substr(strip_tags($blog->post_content), 0, 140) . "...";
        }
        return json_encode($blogs);
    }

敏捷个人网站使用的是自带的主题 Twenty Eleven Theme,之前也想把网页上wordpress首页自动显示一下缩略图,不过查找了一下网络,找到一个插件,用了一下发现这个插件的机制是生成一张缩略图,而我不希望它在我服务器上生成图片,我只是想要自动显示第一张图片作为缩略图而已。没改之前是这样的显示页面,看起来是不是觉得单调呢?

想改了好几次,今天决定改掉它,结果现在如下,是不是看了起来舒服多了啊。

下面我简单说一下,如何修改wordpress的php带来来实现这个首页自动显示文章内容缩略图的功能。

  1. 找到主题下的functions.php,增加一个现实第一个图片的方法。我是用的是 twentyeleven 主题,所以修改文件存在于 wp-content/themes/twentyeleven/functions.php
    //获取文章第一张图片,如果没有图就会显示默认的图
     function catch_that_image() { 
        global $post, $posts; 
        $first_img = ''; 
        ob_start(); 
        ob_end_clean(); 
        $output = preg_match_all('/<img.+src=[\'"]([^\'"]+)[\'"].*>/i', $post->post_content, $matches); 
        $first_img = $matches [1] [0]; 
        if(empty($first_img)){  
            $first_img = bloginfo('template_url'). '/images/default-thumb.jpg'; 
        } 
        return $first_img; 
     } 
  2. 首页是index.php生成的,我们能看到以下代码,
        <?php get_template_part( 'content', get_post_format() ); ?>

    说明是根据文章类型来生成的内容,不同文章类型的内容生成文件一般是content*.php的文件

    我的文章之前都是用相册类型编写的,所以我只需要修改 content-gallery.php文件即可。找到 <div class="entry-content">,在后面添加显示图片的代码即可
    <div class="entry-content">
                <a href="<?php the_permalink(); ?>"><img src="<?php echo catch_that_image() ?>" alt="<?php the_title(); ?>"/></a>  //增加这一行即可
                <?php if ( post_password_required() ) : ?>
  3. 修改后,把functions.php和 content-gallery.php上传到服务器后即可

相关文章:

  • Azure Automation (3) 定期将某个Azure订阅下的所有虚拟机开关机
  • haslayout
  • python练习程序(批量重命名)
  • 国标电表DLT645转MODBUS TCP协议转换器MRD-5021,工业设备,浪涌三级保护MRD
  • jquery 绑定省份和城市
  • 《高性能mysql》到手
  • hdu--1811--并查集拓扑排序好题
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • Python学习小组微信群公告页面
  • 栈的表示和实现
  • 抓取代理IP
  • Jquery Ajax时 error处理 之 parsererror
  • 0816
  • 面试逻辑题
  • 10个网页设计师必备的CSS技巧(转)
  • [Vue CLI 3] 配置解析之 css.extract
  • Java的Interrupt与线程中断
  • orm2 中文文档 3.1 模型属性
  • 官方解决所有 npm 全局安装权限问题
  • 聊聊flink的TableFactory
  • 如何选择开源的机器学习框架?
  • 如何邀请好友注册您的网站(模拟百度网盘)
  • 使用Envoy 作Sidecar Proxy的微服务模式-4.Prometheus的指标收集
  • 小李飞刀:SQL题目刷起来!
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • 仓管云——企业云erp功能有哪些?
  • 长三角G60科创走廊智能驾驶产业联盟揭牌成立,近80家企业助力智能驾驶行业发展 ...
  • #mysql 8.0 踩坑日记
  • ( )的作用是将计算机中的信息传送给用户,计算机应用基础 吉大15春学期《计算机应用基础》在线作业二及答案...
  • (3)Dubbo启动时qos-server can not bind localhost22222错误解决
  • (二十四)Flask之flask-session组件
  • (附源码)流浪动物保护平台的设计与实现 毕业设计 161154
  • (没学懂,待填坑)【动态规划】数位动态规划
  • (三分钟了解debug)SLAM研究方向-Debug总结
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (一)appium-desktop定位元素原理
  • (转)Mysql的优化设置
  • .NET 使用 JustAssembly 比较两个不同版本程序集的 API 变化
  • .NET6使用MiniExcel根据数据源横向导出头部标题及数据
  • .net反编译工具
  • [ linux ] linux 命令英文全称及解释
  • [202209]mysql8.0 双主集群搭建 亲测可用
  • [2023-年度总结]凡是过往,皆为序章
  • [C语言]——函数递归
  • [Django ]Django 的数据库操作
  • [HDOJ4911]Inversion
  • [hdu 1711] Number Sequence [kmp]
  • [HUBUCTF 2022 新生赛]
  • [iOS]中字体样式设置 API
  • [javaSE] GUI(Action事件)
  • [LeetCode]284. Peeking Iterator(C++,类,暴力)
  • [Node + Docker] 聊聊怎么把 nodeclub 构建成 Docker 镜像
  • [NOIP2003 普及组] 乒乓球(模拟)
  • [Python] 集合操作及方法总结
  • [python开发模拟netcat工具] BHPnet