WordPress 添加海报分享功能

WordPress 添加海报分享功能

如题,该功能主要用于生成一份海报页面,具体显示效果如下:

代码参考自精品资源分享博客,原代码存在一些问题导致添加后不能正常使用,自己对代码做了些简单调整,具体调整内容如下:

  • 核心代码打包至 poster 文件夹,方便调用及维护
  • 更改上传目录为 upload/posterimg (原代码将海报直接上传到媒体库并与文章相关联,并且每次都会生成新的海报,时间长了会导致媒体库臃肿,堆积大量无用文件)
  • 调整前段显示样式(新的样式更好看)
  • 还有一些其他的。。。(我也忘了具体是什么了☹)

使用前请注意:

  • PHP 必须开启 GD 库,绘制海报图片要用到。开启方法看这里>>>PHP 如何开启 GD 库?
  • 必须引入 jQuery ,javascript 中 AJAX 提交到 admin-ajax.php 处理要用到

好了,下面简单说下使用方法。

single.php 文件修改

在single.php 文件中合适位置添加如下代码(前端按钮):

<div class="poster-share-ico"><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></div>

footer.php 文件修改

在footer.php 文件中添加如下代码(前端弹窗):

<?phprequire_once get_stylesheet_directory() . '/poster/poster-pop.php';?>

functions.php 文件修改

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

<?phprequire get_stylesheet_directory() . '/poster/poster.php';?>

生成海报失败的原因

[wxcaptcha]如果海报生成失败了,可能是下面这段 js 代码中路径的问题,默认是没有将 WordPress 安装到子目录的方式,将其修改为你网站的 admin-ajax.php 文件位置应该就可以了。

  1. /**
  2. * @name 生成分享海报
  3. * @author 蝈蝈要安静 | 一个不学无数的伪程序员(修订)
  4. * @url https://blog.quietguoguo.com
  5. * @version 2019年03月19日修订版
  6. */
  7. //提交到wordpress自带的ajax处理
  8. $(document).on(‘click touchstart’, ‘.btn-bigger-cover’, function (event) {
  9. event.preventDefault();
  10. var bigger_cover = $(‘.poster-image img’),
  11. btn_bigger_cover = $(‘#bigger-cover’);
  12. if (bigger_cover.hasClass(‘load-poster-img’)) {
  13. $.ajax({
  14. //url: jsui.ajax_url,
  15. url: ‘\/wp-admin\/admin-ajax.php’, // 这地方改成自己的 admin-ajax.php 地址
  16. type: ‘POST’,
  17. dataType: ‘json’,
  18. data: btn_bigger_cover.data(),
  19. }).done(function (data) {
  20. if (data.s == 200) {
  21. bigger_cover.attr(‘src’, data.src);
  22. $(‘.poster-share-weibo’).attr(‘href’, data.share_weibo);
  23. $(‘.poster-share-qzone’).attr(‘href’, data.share_qzone);
  24. $(‘.poster-share-qq’).attr(‘href’, data.share_qq);
  25. $(‘.poster-share-renren’).attr(‘href’, data.share_renren);
  26. $(‘.poster-down’).attr(‘href’, data.src);
  27. bigger_cover.removeClass(‘load-poster-img’);
  28. $(‘.image-loading’).remove();
  29. } else {
  30. alert( data.m );
  31. }
  32. }).fail(function () {
  33. alert(‘Error:网络错误,请稍后再试!’);
  34. })
  35. }
  36. $(‘.poster-share’).css({‘opacity’:‘1’,‘visibility’:‘inherit’});
  37.  
  38. });
  39. //关闭窗口
  40. $(document).on(‘click touchstart’,‘.poster-close’,function() {
  41. $(‘.poster-share’).css({‘opacity’:‘0’,‘visibility’:‘hidden’});
  42. });
 

[/wxcaptcha]

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

如果你是的主题使用了 OptionsFrameWork 框架搭建的后台设置面板,那么下面的步骤将有助于你生成一些后台控制按钮。

options.php 文件修改

将以下代码添加到主题 options.php 文件中去(部分主题可能不叫这名):

//蝈蝈海报$options[] = array(    'name' => __( '蝈蝈海报', 'QGG' ),    'type' => 'heading');// 分享海报 $options[] = array(    'name' => __('海报功能开启', 'QGG'),    'id' => 'poster_share_open',    'std' => true,    'desc' => __('开启', 'QGG'),    'type' => 'checkbox');$options[] = array(    'name' => __( '默认头部大图', 'QGG' ),    'desc' => __( '上传一张显示在封面顶部的大图', 'QGG' ),    'id' => 'poster_default_img',    'std' => '',    'type' => 'upload');$options[] = array(    'name' => __( '左下角LOGO', 'QGG' ),    'desc' => __( '上传一张显示在封面底部的LOGO', 'QGG' ),    'id' => 'poster_logo',    'std' => '',    'type' => 'upload');$options[] = array(    'name' => __( '网站宣传语', 'QGG' ),    'desc' => __( '显示在LOGO下方的一句宣传语', 'QGG' ),    'id' => 'poster_desc',    'std' => '',    'type' => 'text');$options[] = array(    'name' => __( '右下角二维码', 'QGG' ),    'desc' => __( '开启后将再封面图的右下角现在当前文章的二维码', 'QGG' ),    'id' => 'share_poster_img_qrcode',    'std' => false,    'type' => 'checkbox');

single.php 文件调整

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

<!-- 海报分享功能(蝈蝈要安静 2019年03月19日修订版 --><?php if( QGG_options('poster_share_open') ){ ?>    <div class="poster-share-ico">        <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>    </div><?php } ?>

poster.php 文件调整

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

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

应该就这些了,其他问题留言吧。

原文链接:https://harecms.com/?p=53,转载请注明出处。
0
分享海报
文章评论下广告位招租
如有链接失效问题请提交工单
没有账号?注册  忘记密码?