学习教程

Wordpress主题实现文章生成封面图片分享

广告
广告
效果预览

注意事项

需要实现文章生成封面图片分享,您还需要注意以下事项:

  1. PHP 必须开启 GD 库,绘制海报图片要用到。如何开启,大家自行百度
  2. 必须引入 jQuery ,javascript 中 AJAX 提交到 admin-ajax.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
 
    require_once get_stylesheet_directory() . '/poster/poster-pop.php';
 
    ?>

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

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

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

//提交到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[] = 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 文件中的调用代码调整为如下代码:

 <?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 文件中如下代码的注释(大概在 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://pan.baidu.com/s/1f5bM2XcrzBiu1kVAlfLBOg
提取码:boyj

作者:飞鱼岛主

本文转载自:技术宅

原文链接:https://jszbug.com/wc6jrhzy.html

19款免费商用字体

上一篇

不使用插件,实现wordpress登录才能查看网站内容

下一篇

你也可能喜欢

Wordpress主题实现文章生成封面图片分享

长按储存图像,分享给朋友

微信扫一扫

微信扫一扫