如题,该功能主要用于生成一份海报页面,具体显示效果如下:
代码参考自精品资源分享博客,原代码存在一些问题导致添加后不能正常使用,自己对代码做了些简单调整,具体调整内容如下:
- 核心代码打包至 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 文件中添加如下代码(前端弹窗):
<?php require_once get_stylesheet_directory() . '/poster/poster-pop.php'; ?>
functions.php 文件修改
在footer.php 文件中添加如下代码(海报生成):
<?php require get_stylesheet_directory() . '/poster/poster.php'; ?>
生成海报失败的原因
如果海报生成失败了,可能是下面这段 js 代码中路径的问题,默认是没有将 WordPress 安装到子目录的方式,将其修改为你网站的 admin-ajax.php 文件位置应该就可以了。
/** * @name 生成分享海报 * @author 蝈蝈要安静 | 一个不学无数的伪程序员(修订) * @url https://blog.quietguoguo.com * @version 2019年03月19日修订版 */ //提交到wordpress自带的ajax处理 $(document).on('click touchstart', '.btn-bigger-cover', function (event) { event.preventDefault(); var bigger_cover = $('.poster-image img'), btn_bigger_cover = $('#bigger-cover'); if (bigger_cover.hasClass('load-poster-img')) { $.ajax({ //url: jsui.ajax_url, url: '\/wp-admin\/admin-ajax.php', // 这地方改成自己的 admin-ajax.php 地址 type: 'POST', dataType: 'json', data: btn_bigger_cover.data(), }).done(function (data) { if (data.s == 200) { bigger_cover.attr('src', data.src); $('.poster-share-weibo').attr('href', data.share_weibo); $('.poster-share-qzone').attr('href', data.share_qzone); $('.poster-share-qq').attr('href', data.share_qq); $('.poster-share-renren').attr('href', data.share_renren); $('.poster-down').attr('href', data.src); bigger_cover.removeClass('load-poster-img'); $('.image-loading').remove(); } else { alert( data.m ); } }).fail(function () { alert('Error:网络错误,请稍后再试!'); }) } $('.poster-share').css({'opacity':'1','visibility':'inherit'}); }); //关闭窗口 $(document).on('click touchstart','.poster-close',function() { $('.poster-share').css({'opacity':'0','visibility':'hidden'}); });
如果按以上步骤设置正确了 ,那么你的主题应该已经实现了海报分享的功能。
如果你是的主题使用了 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; //}
应该就这些了,其他问题留言吧。
评论 (43)
为什么点击按钮无任何反应?
本站吗?应该可以的啊
我的网站安装以后
如果wp使用了oss怎么处理呢?
注释掉所有QGG_Options以后确实会生成海报,但是好像不带缩略图
有哪些QGG_Options相关的代码需要注释?谢谢
公告一下:各位好,找到原因了,原因是poster.php中QGG_Options是博主根据自己的主题写的,在我们的主题里不适用,把所有与QGG_Options相关的代码都注释掉,就可以生成海报了 :wink:
真的可以了,救命了大神,我把所有QGG_Options语句全干掉了….
生成海报的时候提示Error:网络错误,请稍后再试!admin-ajax.php我就用的你默认的,没有修改,应该是官方的吧,不知道怎么弄了,能否帮忙下呢?
东西不错
:neutral: 为什么我按照教程来,网站就空白了、
请问1元支付这个文件是最新的版本吗?我按照教程配置上,点击按钮无效,也没有任何报错!
是目前最新我在用着的。
不好意思,看到了 :neutral:
找很久了这个功能,在某个主题上见过,相关有bigger,配置下试试。
目前我这用着没啥问题,而且主要文件都注释了,自己调下应该就可以。
解码密码就不能放到下载页面么,求告知。
生成海报的时候提示Error:网络错误,请稍后再试!
admin-ajax.php 地址又没问题
解决了吗,我的也是网络错误。
没有解决…
你试试吧poster.js文件内容放入自己主题的js文件内
不行,试了还是一样
这位仁兄,你解决了吗?
各位好,找到原因了,原因是poster.php中QGG_Options是博主根据自己的主题写的,在我们的主题里不适用,把所有与QGG_Options相关的代码都注释掉,就可以生成海报了
哈哈 改好了 有个BUG 生成海报后 点击X关闭海报时 如果X下面有a标签会直接点击进入页面的
你好,请问你有遇到“Error:网络错误,请稍后再试!”错误吗?请问如何处理的?
很棒的效果,类似苏醒主题的海报分享,经测试没有针对手机端优化,图片太大,so sad :oops:
你好,请问你有遇到“Error:网络错误,请稍后再试!”错误吗?如何处理的?
请问这个支持外链图片吗?
需要收费下载文件?微信支付不行。。。 :shock:
额。。。
最近也在捣鼓这个分享海报功能,但是还没弄成功。 :razz:
我的意思是会员怎么改头像,你把后台上传开放了?dux会员中心本身并没有改头像的功能
博主你好,能不能研究一下dux主题在注册的时候如何直接显示密码,因为发现很多时候用smtp将注册后的密码发给用户的时候,很多邮件都被丢进垃圾箱了,或者直接被拒收了,用户体验很不好,希望能研究一下用户直接能看到密码的,我看正常的主题有很多这方面的帖子,但是自己研究了很久 没办法移植到dux主题上来。
例如此文的优化注册体验http://www.frontopen.com/1769.html
这个头像你用什么修改的,我发现会员中心里,个人资料修改那没有改头像这一项啊
Gravatar头像