!
也想出现在这里? 联系我们
广告位

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

如题,该功能主要用于生成 WordPress 主题海报分享功能,前一段时间一直有朋友让我为主题增加一个生成海报分享功能,于是自己在网上找了一下教程,但是大部分都是不够详细或( V o / F 1 H #者有错误的,海报分享其实就是利用 PHP 的 GD 库来让图片生成,所以你所使用的 PHf [ 9 w ? . #P 环境必须支持 GD 库,具体显示效果如下:

网上的教程很多都是很简单的描述了下不适合新手,并且原代码存在一些问题导致添加后不能正常B 0 I使用,自己对代码^ & K做了些简单调整,具体调整内容如下:

核心代d . N o ) t j %码打包至 poster 文件夹,方便调用及维护(右侧下载)

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

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

还有一些1 B &其他的。。。(我也忘了具体是什么了&O & D \ q h39;)

注意事项:

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

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

详细步骤:

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

  1. <div cly 6 F V c Cass=&qi B r Buot;poster-share-ico">
  2. <a class="btn-bigger-cover" dat^ p & K [ la-nonce="<?php echo wp_create_nonce('mi-create-[ G _ v e - ( k !bigger-image-'.$post->ID P D t1;;?>" data-id="<?php echo $post->ID; ?>" data-action="create-bigger-ima6 o m : % J * j *ge" id="bigger-cover" hr] T * x _ y Nef=&quoO R O 3 * [ m 9 Rt;javascripm k 6t:;"><i class="fa fa-paper-plane">&lte d 0;/i> <span>生成海报</span></a>
  3. </div>

二、添加下面代码到网页底部文件中,位于主题U 5 % ; M \ N下 footer.php 文件,建议添加/ O W ( g ;到 footer 代码结束6 w x

  1. <?php
  2. require_once get_stylesheeU : - Z jtd 0 e X ^ _ G ! 0_directory() . '/poster/poster-pop.php';
  3. ?>

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

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

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

  1. //提交到wordpress自带的ajax处理
  2. $g 0 { (0;document).on('click touchstart', '.btn-bigger-coved y vr', function (event) {
  3. event.preventDefault~ y a A h t k 2 v();
  4. var bigger_cover = $('.poster-image img'r \ 0 ` , , . w 3),
  5. btn_bigger_cover = $('#bigger-cover');
  6. if (bigger_cover.hasClass('load-poster-img')) {
  7. $.ajax(&] w ] c#123;
  8. //url: jsui.ajax_url,
  9. url: '\/wp-admin\/admi` C A V U Q $n-ajax.php', // 这地方改成自己的 admin-ajax.php 地址
  10. type: 'PO9 O J L # / OST',
  11. dataType: 'json',
  12. data: btn_bigger_cover.data(),
  13. }X O i 5 r . 4 X).done(function (dap H Z 0 O & i Xta) {% E S C;
  14. if (data.5 E (s == 200) {
  15. bigger_cover.attr('src', data.src);
  16. $&{ - b b f u 4 q#40;'.poster-share-weibof C G ( v').attr('href', data.share_weibo);
  17. $('.c L ] C %poster-share-qzone').attr('href', data.share_qzone);
  18. $('.poster-share-qq').attr('href', data.share_qq);
  19. $&5 = s#40;'.! ! S wposter-share-renren').attr('href', data.share_renren);
  20. $('.poster-down'&K & g W ` 7 . p#41;.attr} y ! y % d 3 _0;'href', data.src);
  21. bigger_cover.removeClass&~ j n b v T R @ %#40;'load-poster-img');
  22. $&w r j q p c 1 l#40;'.image-loading').remove9 ] 5 ! V g K 5 F40;);
  23. } else {
  24. alert( daW y & j Rta.m );
  25. }
  26. }).fail(function &m P j U u : 8 1 t#40;) {
  27. alert2 G y S0;'Error:网络错误,请稍后再试!');u ` b . q 8
  28. })
  29. }
  30. $('.poster-share').css({'opacity':'1','visibility':'inherit'});
  31. : V 7 5 M125;);
  32. //关闭窗口
  33. $(document).on('click touchstart','.poster-close',function() {
  34. $('.poster-share').css({'opaciQ S ) G wty':'0','visibility':'hidden'});
  35. });

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

扩展应用:

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

  1. $options[]p G P t = array&y { G p t , 2 } W#40;
  2. 'name' => __( '蝈蝈海报',: [ m % / 'QGG' ),
  3. 'type' => 'heading'
  4. );
  5. // 分享海报
  6. $options[] = array(
  7. 'name' => __('海报功能开启M H a z G L 7', 'QGG'),
  8. 'id' => 'poster_share_open',
  9. 'std' => true,8 / C ! h J
  10. 'des] \ X u 6 [c' => __('开启', 'QGG'),f ; O ` H l
  11. 'type' => 'checkbox'&D Z P d M q h r U#41;;
  12. $options[% J Z] =5 ] ? : h f - @ b array(
  13. 'name' => __&! : w e - 4 ~#40; '默认头部大图', 'QGG' ),
  14. 'desc' => __( '上传一张显示在封面顶部的大图', 'Qo B p C 7 F VGG' ),
  15. 'id' => 'poster_default_img',
  16. 'std' => '',
  17. 'type'W = 3 y = p => 'upload'
  18. );
  19. $options[R 3 \ \ _ $93; = array(
  20. 'name' => __( '左下角LOGO', 'QGG' ),
  21. 'desc' => __( '上传一张显示在封面底部的LOGO', 'QGG' ),
  22. 'p o \id' => 'poster_logo',
  23. 'std' => '',
  24. 'type' =&gtt Z [; 'upload'1 ^ s
  25. );
  26. $options[] = arK ; S l W @ray(
  27. 'name' => __( '网站宣传语', 'QGG' ),
  28. 'd. u $esc' => __k Y Y 4 * ?0; '显示在LOGO下方的一句宣传语', 'QGG' ),
  29. 'id' => 'poster_desc',
  30. 'std' => '',
  31. 'type' => 'text'
  32. );
  33. $options[] = array&\ X T { k#40;
  34. 'name' => __( '右下角二D : Y g T O ) / t维码', 'QGG' ),
  35. 'desc' => __( '开启后将再封面图的右下角现在当前文章的二维码', 'QGG' ),
  36. 'id' => 'share_poster_img_qrcode',
  37. 'std' =>E 4 ! R i R K false,
  38. 'type' => 'checkbox'
  39. );

将 singlP 4 k F 2 De.H \ E H | I (php 文件中的调用代码调整为如下代码:

  1. <?php if( QGG_options('poster_share_[ m y -open') ){ ?>
  2. <div^ f J , classW ^ *="poster-share-ico">
  3. <a class="btn-bigger-cover" data-nonce="<?p^ V e t a { 9hp echo wp_create_nonce(L J o B % ? &'mi-create-bigger-image-'.$po@ A T 9 l r vst->ID );?>" data-id="<?php echo $post->ID; ?>" data-actionF V ; P="create-bi7 8 , * 1 c C ^ 9gger\ + s m G O $-image" id="biggeM ) ) Ar-cover" href="javascript:;&qG F 2 0 ( ^uot;><i cu ) a d z 6 dlass="fa fa-paper-plane"></i> <span>生成海报<5 l q/span></a>
  4. </div>
  5. <?php } ?>

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

  1. // 获取海报底部二维码图片
  2. //if(QGG_Options('s: # E )hare_poster_img_qrcode')){
  3. $qrcode_img = get_template_directory_uri().'/poster/functions/D L 0qrcode.php?data='.ge$ 6 & ) ! S D E At_the_perm2 C 9 c ? ? ` T ]alink($post_id);
  4. //}else{
  5. //$qrcode_img = NULL;
  6. //}

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

给TA打赏
共{{data.count}}人
人已打赏
WordPress教程

WordPress统计全站文章数量/运行天数代码/评论数量代码

2022-11-4 11:13:36

WordPress教程

WordPress 如何调用发布的最新文章

2022-11-4 11:14:48

下载说明

  • 1、微码盒所提供的压缩包若无特别说明,解压密码均为weimahe.com
  • 2、下载后文件若为压缩包格式,请安装7Z软件或者其它压缩软件进行解压;
  • 3、文件比较大的时候,建议使用下载工具进行下载,浏览器下载有时候会自动中断,导致下载错误;
  • 4、资源可能会由于内容问题被和谐,导致下载链接不可用,遇到此问题,请到文章页面进行反馈,以便微码盒及时进行更新;
  • 5、其他下载问题请自行搜索教程,这里不一一讲解。

站长声明

本站大部分下载资源收集于网络,只做学习和交流使用,版权归原作者所有;若为付费资源,请在下载后24小时之内自觉删除;若作商业用途,请到原网站购买;由于未及时购买和付费发生的侵权行为,与本站无关。本站发布的内容若侵犯到您的权益,请联系本站删除,我们将及时处理!
0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索