WordPress教程

WordPress主题添加生成海报封面功能

也想出现在这里?联系我们
面包多

如题,该功能主要用于生成 wordpress 主题海报分享功能,前一段时间一直有朋友让我为主题增加一个生成海报分享功能,于是自己在网上找了一下教程,但是大部分都是不够详细或者有错误的,海报分享其实就是利用 PHP 的 GD 库来让图片生成,所以你所使用的 PHP 环境必须支持 GD 库,具体显示效果如下:
WordPress主题添加生成海报封面功能-创客云
网上的教程很多都是很简单的描述了下不适合新手,并且原代码存在一些问题导致添加后不能正常使用,自己对代码做了些简单调整,具体调整内容如下:

核心代码打包至 poster 文件夹,方便调用及维护(右侧下载)

也想出现在这里?联系我们
创客主机

更改上传目录为 upload/posterimg (原代码将海报直接上传到媒体库并与文章相关联,并且每次都会生成新的海报,时间长了会导致媒体库臃肿,堆积大量无用文件)

调整前段显示样式(新的样式更好看)

也想出现在这里?联系我们
创客主机

还有一些其他的。。。(我也忘了具体是什么了☹)

注意事项:

PHP 必须开启 GD 库,绘制海报图片要用到。开启方法看这里>>>PHP 如何开启 GD 库?

必须引入 jQuery ,javascript 中 AJAX 提交到 admin-ajax.php 处理要用到

详细步骤:

一、好了,下面简单说下使用方法,添加下面代码到文章适当位置,一般位于主题 single.php 文件里,自己找个合适位置添加如下代码(前端按钮):

  1. <div class="poster-share-ico">
  2. <a class="btn-bigger-cover" data-nonce="<?php echo wp_create_nonce('mi-create-bigger-image-'.$post->ID );?>" data-id="<?php echo $post->ID; ?>" data-action="create-bigger-image" id="bigger-cover" href="javascript:;"><i class="fa fa-paper-plane"></i> <span>生成海报</span></a>
  3. </div>

二、添加下面代码到网页底部文件中,位于主题下 footer.php 文件,建议添加到 footer 代码结束后

  1. <?php
  2. require_once get_stylesheet_directory() . '/poster/poster-pop.php';
  3. ?>

三、在 functions.php 文件中添加如下代码(海报生成):

  1. <?php
  2. require get_stylesheet_directory() . '/poster/poster.php';
  3. ?>

注意:如果生成海报失败的原因,首先网站需要 jQuery 支持,因为使用的 jQuery 的 AJAX 提交到主题后端处理,再有还可能是下面这段 js 代码中路径的问题,默认是没有将 WordPress 安装到子目录的方式,将其\poster\js\poster.js 里修改为你网站的 admin-ajax.php 文件位置应该就可以了。

  1. //提交到wordpress自带的ajax处理
  2. $(document).on('click touchstart', '.btn-bigger-cover', function (event) {
  3.     event.preventDefault();
  4.     var bigger_cover = $('.poster-image img'),
  5.         btn_bigger_cover = $('#bigger-cover');
  6.     if (bigger_cover.hasClass('load-poster-img')) {
  7.         $.ajax({
  8. 			//url: jsui.ajax_url,
  9. 			url: '\/wp-admin\/admin-ajax.php',    // 这地方改成自己的 admin-ajax.php 地址
  10.             type: 'POST',
  11.             dataType: 'json',
  12.             data: btn_bigger_cover.data(),
  13.         }).done(function (data) {
  14.             if (data.s == 200) {
  15.                 bigger_cover.attr('src', data.src);
  16.                 $('.poster-share-weibo').attr('href', data.share_weibo);
  17. 				$('.poster-share-qzone').attr('href', data.share_qzone);
  18. 				$('.poster-share-qq').attr('href', data.share_qq);
  19. 				$('.poster-share-renren').attr('href', data.share_renren);
  20.                 $('.poster-down').attr('href', data.src);
  21.                 bigger_cover.removeClass('load-poster-img');
  22.                 $('.image-loading').remove();
  23.             } else {
  24.                 alert( data.m );
  25.             }
  26.         }).fail(function () {
  27.             alert('Error:网络错误,请稍后再试!');
  28.         })
  29.     }
  30.     $('.poster-share').css({'opacity':'1','visibility':'inherit'});   
  31.  
  32. });
  33. //关闭窗口
  34. $(document).on('click touchstart','.poster-close',function() {
  35.     $('.poster-share').css({'opacity':'0','visibility':'hidden'}); 
  36. });

如果按以上步骤设置正确了 ,那么你的主题应该已经实现了海报分享的功能。

扩展应用:

如果你是的主题使用了 OptionsFrameWork 框架搭建的后台设置面板,那么下面的步骤将有助于你生成一些后台控制按钮。将以下代码添加到主题 options.php 文件中去(部分主题可能不叫这名):

  1. $options[] = array(
  2.     'name' => __( '蝈蝈海报', 'QGG' ),
  3.     'type' => 'heading'
  4. );
  5. // 分享海报 
  6. $options[] = array(
  7.     'name' => __('海报功能开启', 'QGG'),
  8.     'id' => 'poster_share_open',
  9.     'std' => true,
  10.     'desc' => __('开启', 'QGG'),
  11.     'type' => 'checkbox');
  12. $options[] = array(
  13.     'name' => __( '默认头部大图', 'QGG' ),
  14.     'desc' => __( '上传一张显示在封面顶部的大图', 'QGG' ),
  15.     'id' => 'poster_default_img',
  16.     'std' => '',
  17.     'type' => 'upload'
  18. );
  19. $options[] = array(
  20.     'name' => __( '左下角LOGO', 'QGG' ),
  21.     'desc' => __( '上传一张显示在封面底部的LOGO', 'QGG' ),
  22.     'id' => 'poster_logo',
  23.     'std' => '',
  24.     'type' => 'upload'
  25. );
  26. $options[] = array(
  27.     'name' => __( '网站宣传语', 'QGG' ),
  28.     'desc' => __( '显示在LOGO下方的一句宣传语', 'QGG' ),
  29.     'id' => 'poster_desc',
  30.     'std' => '',
  31.     'type' => 'text'
  32. );
  33. $options[] = array(
  34.     'name' => __( '右下角二维码', 'QGG' ),
  35.     'desc' => __( '开启后将再封面图的右下角现在当前文章的二维码', 'QGG' ),
  36.     'id' => 'share_poster_img_qrcode',
  37.     'std' => false,
  38.     'type' => 'checkbox'
  39. );

将 single.php 文件中的调用代码调整为如下代码:

  1. <?php if( QGG_options('poster_share_open') ){ ?>
  2.     <div class="poster-share-ico">
  3.         <a class="btn-bigger-cover" data-nonce="<?php echo wp_create_nonce('mi-create-bigger-image-'.$post->ID );?>" data-id="<?php echo $post->ID; ?>" data-action="create-bigger-image" id="bigger-cover" href="javascript:;"><i class="fa fa-paper-plane"></i> <span>生成海报</span></a>
  4.     </div>
  5. <?php } ?>

取消 poster.php 文件中如下代码的注释(大概在 342 行位置):

  1. // 获取海报底部二维码图片
  2. //if(QGG_Options('share_poster_img_qrcode')){
  3. $qrcode_img = get_template_directory_uri().'/poster/functions/qrcode.php?data='.get_the_permalink($post_id);
  4. //}else{
  5. //$qrcode_img = NULL;
  6. //}

以上就是为 WordPress 增加一个分享海报功能全部教程,应该就这些了,如果有其他问题可以在底部留言一起讨论。

服务范围 1、专业提供WordPress主题、插件汉化、优化、PHP环境配置等服务请详询在线客服
2、本站承接 WordPress、DedeCMS、ThinkPHP 等系统建站、仿站、开发、定制等服务
3、英文模板(主题)安装费用为120元/次,汉化主题首次免费安装(二次安装30元/次)
售后时间 周一至周五(法定节假日除外) 10:00-22:00
免责声明 本站所提供的模板(主题/插件)等资源仅供学习交流,若使用商业用途,请购买正版授权,否则产生的一切后果将由下载用户自行承担,有部分资源为网上收集或仿制而来,若模板侵犯了您的合法权益,请来信通知我们(Email: 2107117185@qq.com),我们会及时删除,给您带来的不便,我们深表歉意!
也想出现在这里?联系我们
360uxc
免费下载
(12)

本文由 创客云 作者:PetitQ 发表,转载请注明来源!

也想出现在这里?联系我们
创客主机

热评文章

评论:

7 条评论,访客:7 条,博主:0 条
    • PetitQ
      PetitQ发布于: 

      感谢您关注本站,已经修正链接请刷新后下载!

  1. avatar
    大胡发布于: 

    按照上述操作无效,也没有提示任何报错!

    • PetitQ
      PetitQ发布于: 

      您好,建议你检查下是否有遗漏的步骤,最近程序比较忙无法给你使用上的帮助!

  2. avatar
    Owen发布于: 

    网络错误: wp-admin/admin-ajax.php 报 500会是什么原因啊?地址没错

    • PetitQ
      PetitQ发布于: 

      报 500 错误,是文件路径错误吧。

      • avatar
        Owen发布于: 

        没错啊,一起集成的点赞功能正常,麻烦帮我看看:测试地址:http(s://owell.iowen.cn/64.html

发表评论

精彩推荐

Tabula - 艺术音乐外语培训学校网站WordPress模板

Envato Affiliates

本站承接 WordPress / DedeCMS / ThinkPHP 等
系统建站、仿站、开发、定制等业务!

Hi, 如果您有主题插件代购汉化等建站相关业务,可以 跟我联系 哦!
欢迎投稿
嘿,欢迎咨询!