Dragon
龙笑天龙笑天  2018-01-23 11:10 龙笑天下 隐藏边栏 |   123 条评论  4,852 
文章评分 52 次,平均分 5.0

这篇文章主要介绍知言的tinection主题的一些小bug以及相应的解决方法。当然,这些问题在Dragon 主题中已经都解决了,欢迎大家前往购买体验~

【中秋国庆特惠】Wordpress 商城会员多功能高级主题:Dragon V2.7.0-BG
【中秋国庆特惠】Wordpress 商城会员多功能高级主题:Dragon V2.7.0

【中秋国庆特惠】Wordpress 商城会员多功能高级主题:Dragon V2.7.0[出售]

WordPress 个人博客 CMS 主题 Dragon,CMS、博客、自适应响应式、用户中心、商城,强大到窒息~

Bug 1:分页导航的问题

5 月 17 日,浏览同样使用 tinection 主题的博客时,发现分页导航有个小问题(如下图:1 和 5 之间不显示省略号“...”),于是看了看自己的,再返回知言的博客看了看,都有这个问题,那就应该是 tinection 主题的通病了。

知言 Tinection 主题中的小 Bug 及修复方法(更新到 7 个 Bug) wordpress

查看了下源代码,发现在主题的 functions.php 文件中(搜索关键字:分页导航),有关于分页导航的代码函数pagenavi(,试着改了改,得到了解决!可以点我看看效果。

以下是修复后的分页导航代码:

/* 首页分页导航 
/* -------------*/  
function pagenavi( $before = '', $after = '', $p = 2 ) {
    if ( is_singular() ) return;
    global $wp_query, $paged;
    $max_page = $wp_query->max_num_pages;
    if ( $max_page == 1 )
        return;
    if ( empty( $paged ) )
        $paged = 1;
    	// $before = "<span class='pg-item'><a href='".esc_html( get_pagenum_link( $i ) )."'>{$i}</a></span>";
    echo $before;
    if ( $paged > 1)
        p_link( $paged - 1, '上一页', '<span class="pg-item pg-nav-item pg-prev">' ,'上一页' );
    if ( $paged > $p + 1 )
        p_link( 1, '首页','<span class="pg-item">',1 );
		if ( $paged > 2 + $p ) echo '<span class="pg-item"> ... </span>';
    for( $i = $paged - $p; $i <= $paged + $p; $i++ ) {
        if ( $i > 0 && $i <= $max_page )
            $i == $paged ? print "<span class='pg-item pg-item-current'><span class='current'>{$i}</span></span>" : p_link( $i,'', '<span class="pg-item">',$i);
    }
    if ( $paged < $max_page - $p ) p_link( $max_page, __('末页','tinection'),'<span class="pg-item"> ... </span><span class="pg-item">',$max_page );
    if ( $paged < $max_page ) p_link( $paged + 1,__('下一页','tinection'), '<span class="pg-item pg-nav-item pg-next">' ,__('下一页','tinection'));
    echo $after;
}

相信大家也看出来了,其实就是在原代码中增加了第 17 行的代码:

if ( $paged > 2 + $p ) echo '<span class="pg-item"> ... </span>';

好了保存上传,刷新下,OK 了!

更多好看实用的分页导航的样式及实现方法详见下面这篇文章:

wordpress 自定义分页导航方法大全(全网最全版)-BG
wordpress 自定义分页导航方法大全(全网最全版)

wordpress 自定义分页导航方法大全(全网最全版)

wordpress 分页导航是用来切换文章的一个功能,添加了 wordpress 分页导航后,用户即可自由到达指定的页面数浏览分类文章,而这样的一个很简单功能却有很多朋友在用插件:WP-PageN...

Bug 2:用户中心里“收藏的文章”选项卡

问题描述:“收藏的文章”选项卡里的分页不能进入或点击出现 404。

解决方法:

打开主题根目录里的 author.php,将// 收藏 start// 收藏 end中的部分改为下面的内容:

// 收藏 start
if( $get_tab=='collect'){
	$item_html = '
  • '.__('共收藏了','tinection').$collects_count.'篇文章
  • '; echo '
    • '.$item_html.'
    '; $paged = (get_query_var('paged')) ? get_query_var('paged') : 1; query_posts( array( 'post__not_in'=>get_option('sticky_posts'), 'post__in' => $collects_array, 'post_status' => 'publish', 'paged' => $paged ) ); while ( have_posts() ) : the_post(); get_template_part('includes/content','archive'); endwhile; // end of the loop. tin_paginate(); wp_reset_query(); } // 收藏 end

    Bug 3:手机端下载收费积分文件问题

    问题描述:在手机端下载不了收费积分文件,弹出框不见了...

    状态:期待更完美的解决方法!

    初步解决方法:来自群友 @宅

    在 style.css 里以下关于弹出框的 css 的下一行加上一句 css,如下:

    
    .tinalert {
    	display:none;
    	position:fixed;
    	top:50%;
    	left:50%;
    	width:300px;
    	min-height:150px;
    	margin-top:-75px;
    	margin-left:-150px;
    	box-shadow:0 0 5px #aaa;
    	background:#fafafa;
    	border:1px solid #aaa;
    	z-index:99999;
    }
    @media screen and (max-width:640px) {
    	.page-template-page-download .tinalert {
    	position:absolute;
    	top:248px;
    }
    }
    

    Bug 4:下载页面登录或退出时链接重定向问题

    问题描述:在任意下载页面,如:https://www.ilxtx.com/download?pid=2316&code=47d041,当在此页面登录或退出时,登录成功后会默认跳转到这个页面:https://www.ilxtx.com/dl/

    状态:下面的方法解决了登录时的情况;退出时还是有问题~期待大神解决!

    解决方法:来自 @知言

    打开 functions.php 文件,搜索tin_get_current_page_url,会搜到 2 个函数tin_get_current_page_url()tin_get_current_page_url2(),将这 2 个函数及内容都删掉,然后改成下面这样:

    function tin_get_current_page_url(){
    	$scheme = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http';
        $port_str = $_SERVER['SERVER_PORT'] != '80' ? ':' . $_SERVER['SERVER_PORT'] : '';
        $url = $scheme . '://' . $_SERVER['HTTP_HOST'] . $port_str . $_SERVER["REQUEST_URI"];
        return $url;
    }

    Bug 5:部分主机上注册验证码不显示的问题

    问题描述:在某些主机上,点击注册时验证码不显示,或需要点一下验证码才显示。

    解决方法:来自 @知言

    首先,将主题里 includes\captcha.php 中的内容改成下面这个:

    <?php
    require_once(dirname(__FILE__).DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."..".DIRECTORY_SEPARATOR."wp-load.php");
    /**
    * 验证码
    * Class Captcha
    */
    class Captcha{
    /**
    * 验证码宽度
    *
    * @since 2.0.0
    * @access private
    * @var int
    */
    private $_width ;
    /**
    * 验证码高度
    *
    * @since 2.0.0
    * @access private
    * @var int
    */
    private $_height;
    /**
    * 验证码字符个数
    *
    * @since 2.0.0
    * @access private
    * @var int
    */
    private $_counts;
    /**
    * 允许的字符范围
    *
    * @since 2.0.0
    * @access private
    * @var string
    */
    private $_distrubcode;
    /**
    * 验证码字体
    *
    * @since 2.0.0
    * @access private
    * @var string
    */
    private $_font;
    /**
    * Session
    *
    * @since 2.0.0
    * @access private
    * @var string
    */
    private $_session;
    function __construct($width = 120, $height = 30, $counts = 5, $distrubcode='', $font=''){
    // Check for GD library
    if( !function_exists('gd_info') ) {
    throw new Exception('Required GD library is missing', 'tt');
    }
    $this->_width = $width;
    $this->_height = $height;
    $this->_counts = $counts;
    $this->_distrubcode = empty($distrubcode) ? "1235467890qwertyuipkjhgfdaszxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM" : $distrubcode;
    $this->_font = empty($font) ? THEME_DIR.DIRECTORY_SEPARATOR."fonts".DIRECTORY_SEPARATOR."consolas".DIRECTORY_SEPARATOR."consolas-webfont.ttf" : $font;
    $this->_session = $this->sessioncode();
    session_start();
    $_SESSION['tin_captcha'] = $this->_session;
    $this->imageout();
    }
    /**
    * 产生随机的字符用于验证码
    *
    * @since 2.0.0
    * @access private
    * @return string
    */
    private function sessioncode(){
    $originalcode = $this->_distrubcode;
    $countdistrub = strlen($originalcode);
    $_dscode = "";
    $counts=$this->_counts;
    for($j=0; $j<$counts; $j++){
    $dscode = $originalcode[rand(0, $countdistrub-1)];
    $_dscode.=$dscode;
    }
    return $_dscode;
    }
    /**
    * 创建画布资源
    *
    * @since 2.0.0
    * @access private
    * @return resource
    */
    private function create_imagesource(){
    return imagecreate($this->_width,$this->_height);
    }
    /**
    * 设置背景色
    *
    * @since 2.0.0
    * @access private
    * @param resource $image 画布资源
    * @return void
    */
    private function set_backgroundcolor($image){
    $bgcolor = imagecolorallocate($image, rand(200,255), rand(200,255), rand(200,255));
    imagefill($image, 0, 0, $bgcolor);
    }
    /**
    * 添加验证码字符
    *
    * @since 2.0.0
    * @access private
    * @param resource $image 画布资源
    * @return void
    */
    private function set_code(&$image){
    $width=$this->_width;
    $counts=$this->_counts;
    $height=$this->_height;
    $scode=$this->_session;
    $y=floor($height/2) + floor($height/4);
    $fontsize=rand(20,25);
    $font=$this->_font;
    for($i=0; $i<$counts; $i++){
    $char=$scode[$i];
    $x=floor($width/$counts)*$i+8;
    $angle=rand(-20,30);
    $color = imagecolorallocate($image, rand(0,50), rand(50,100), rand(100,140));
    imagettftext($image, $fontsize, $angle, $x, $y, $color, $font, $char);
    }
    }
    /**
    * 添加验证码干扰字符
    *
    * @since 2.0.0
    * @access private
    * @param resource $image 画布资源
    * @return void
    */
    private function set_distrubecode(&$image){
    $count_h=$this->_height;
    $cou=floor($count_h*2);
    for($i=0; $i<$cou; $i++){
    $x=rand(0,$this->_width);
    $y=rand(0,$this->_height);
    $angle=rand(0,360);
    $fontsize=rand(4,6);
    $font=$this->_font;
    $originalcode = $this->_distrubcode;
    $countdistrub = strlen($originalcode);
    $dscode = $originalcode[rand(0, $countdistrub-1)];
    $color = imagecolorallocate($image, rand(40,140), rand(40,140), rand(40,140));
    imagettftext($image, $fontsize, $angle, $x, $y, $color, $font, $dscode);
    }
    }
    /**
    * 输出图像
    *
    * @since 2.0.0
    * @access private
    * @return void
    */
    private function imageout(){
    $im = $this->create_imagesource();
    $this->set_backgroundcolor($im);
    $this->set_code($im);
    $this->set_distrubecode($im);
    header("Content-Type: image/png");
    imagepng($im);
    imagedestroy($im);
    }
    }
    $captcha = new Captcha(90, 40, 4);

    然后,如果验证码需要点击一下才显示的话,就再将主题里的 includes\loginbox.php 中的如下内容(第 79 行):

    <img src="<?php echo THEME_URI.'/images/captcha-clk.png'; ?>" class="captcha_img inline" title="点击刷新验证码">

    改为:

    <img src="<?php echo THEME_URI.'/includes/captcha.php?t='.time(); ?>" class="captcha_img inline" title="点击刷新验证码" />

    修改后的效果请看本站

    下文是 Tinection 主题以及 UM 插件验证码关闭方法:

    首先打开主题的 includes/loginbox.php,定位至 75 行,将:

    <p id="captcha_inline">
                <input class="input-control inline" type="text" id="tin_captcha" name="tin_captcha" placeholder="输入验证码" required>
                <i mg src="<?php echo THEME_URI.'/images/captcha-clk.png'; ?>" class="captcha_img inline" title="点击刷新验证码">
                <input class="submit inline" type="submit" value="注册" name="submit">
            </p>

    修改为:

    <p>
        <input class="submit inline" type="submit" value="注册" name="submit">
    </p>

    再打开主题的 functions.php 文件,定位至大约 1645 行,寻找到下面的代码并删掉:

    /* 后台注册同时添加验证码
    /* ----------------------- */
    function tin_add_register_captcha(){
    $captcha = THEME_URI.'/includes/captcha.php';
    ?>
    <p style="overflow:hidden;">
    <label for="tin_captcha">验证码<br>
    <input type="text" name="tin_captcha" id="tin_captcha" aria-describedby="" class="input" value="" size="20" style="float:left;margin-right:10px;width:190px;">
    <i mg src="<?php echo $captcha; ?>" class="captcha_img inline" title="点击刷新验证码" onclick="this.src='<?php echo $captcha; ?>';" style="float:right;margin-top: 5px;"></label>
    </p>
    <?php
    }
    add_action('register_form','tin_add_register_captcha');
     
    function tin_add_register_captcha_verify($sanitized_user_login,$user_email,$errors){
    if(!isset($_POST['tin_captcha'])||empty($_POST['tin_captcha'])){
    return $errors->add( 'empty_captcha', __( '请填写验证码','tinection' ) );
    }else{
    $captcha = strtolower(trim($_POST['tin_captcha']));
    session_start();
    $session_captcha = strtolower($_SESSION['tin_captcha']);
    if($captcha!=$session_captcha){
    return $errors->add( 'wrong_captcha', __( '验证码错误','tinection' ) );
    }
    }
    }
    add_action('register_post','tin_add_register_captcha_verify',10,3);

    Bug 6:启用 https 后,从前台登录后,进不了后台问题

    请在 functions.php 文件和 functions/open-social.php 文件中定位wp_signonwp_set_auth_cookie这 2 个函数,然后参照下文方法来修改:

    WordPress 实现用户自动登录的方法-BG
    WordPress 实现用户自动登录的方法

    WordPress 实现用户自动登录的方法

    本文主要介绍 WordPress 实现用户自动登录的方法,wp_signon()和 wp_set_auth_cookie()函数,以及解决一个启用 https 后出现的进不了 wordpress 后台的问...

    Bug 8:搜索结果不显示商品问题

    今天有盆友问到这个问题,在此龙笑天下就记录下,要想使搜索结果能搜索到商品,则只需将以下代码加入到 functions.php 中即可:

    /**
     * 知言 Tinection 主题中的小 Bug 及修复方法(更新到 6 个 Bug) - 龙笑天下
     * https://www.ilxtx.com/bug-in-tinection.html
     * 让搜索结果能搜索到商品
     */
    function lxtx_search_filter_page($query) {
        if (!$query->is_admin && $query->is_search) {
            $query->set('post_type', array('post','store'));
        }
            return $query;
    }
    add_filter('pre_get_posts','lxtx_search_filter_page');

    「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!

    本文为原创文章,版权归所有,欢迎分享本文,转载请保留出处!

    龙笑天
    龙笑天 关注:32    粉丝:36 最后编辑于:2020-07-29
    互助分享,互联网本该如此!

    发表评论

    表情 贴图 链接 私密 格式 签到
    最赞评论
    1. 成航先森
      成航先森 评论达人 LV.3 来自天朝的朋友 谷歌浏览器 48.0.2564.116 Windows 7 四川省成都市 联通

      加油!BUG 什么的太耗费心神了,唉

    2. 龙笑天
      龙笑天 永久会员 博主 来自天朝的朋友 谷歌浏览器 39.0.0.0  CHM-TL00H Build/HonorCHM-TL00H) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/39.0.0.0 Mobile Safari/537.36 Appcan/3.1

      @四川卫校谁不讨厌呢

    3. nilkkk
      nilkkk 来自天朝的朋友 谷歌浏览器 42.0.2311.154 Windows XP 广东省深圳市 BGP数据中心

      关于手机下载不弹窗的问题,我是把 style.css 样式文件里/* Download page */下面的.tinalert{display: none;position: fixed;改成.tinalert{display: none;position: absolute;,就是把 fixed 改成 absolute,固定样式,我倒不是不弹窗,而是弹出来按键无效,确定和取消都无效,改了这个就好了

    1. T
      traveler 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 10 内蒙古 移动

      你好,我想请教下,最近在 php7 环境全新安装了 wordpress5.3.2,上传 tinection 主题并启用后,后台就报错进不去了,是不是主题不适用 php7 版本啊?

      40楼 2020-01-05 11:18
      0 0 回复
      • 龙笑天
        龙笑天 永久会员 博主 来自天朝的朋友 火狐浏览器 Windows 7

        @traveler可以根据报错信息自己排查解决下哈~
        PS:本站 Dragon 支持 PHP7,使用 tinection 的盆友建议使用下 Dragon,肯定让你满意哈~ [滑稽]

        • T
          traveler 来自天朝的朋友 谷歌浏览器 55.0.2883.87 Windows 10 内蒙古 移动

          @龙笑天是的,mysql_query 和 mysql_num_rows 函数的问题,php7 已经弃用这些函数了,修改了下,又出现了另一个错误~
          Tinection\functions\auto-save-image.php 文件 38 行的$this,哎

    2. 唯品秀博客
      唯品秀博客 来自天朝的朋友 谷歌浏览器 57.0.2987.98 Windows 10 上海市 电信

      唯品秀博客主题免费开源,可以看看,地址点击我用户名

      39楼 2019-05-06 14:24
      0 0 回复
    3. qq471135198
      qq471135198 来自天朝的朋友 搜狗浏览器 2.X Windows 7 湖南省衡阳市 联通

      三级导航不显示 怎么弄哟 看你的分类那里显示三级导航的

      38楼 2018-02-05 23:23
      0 0 回复
    4. 西枫里博客
      西枫里博客 评论达人 LV.3 来自天朝的朋友 搜狗浏览器 2.X Windows 7 上海市 联通

      我去,一次改这么多问题,666
      膜拜大佬~

      37楼 2018-01-25 00:20
      0 0 回复
    扫一扫二维码分享