知言 Tinection 主题中的小 Bug 及修复方法(更新到 7 个 Bug)
这篇文章主要介绍知言的tinection主题的一些小bug以及相应的解决方法。当然,这些问题在Dragon 主…
这篇文章主要介绍知言的tinection主题的一些小bug以及相应的解决方法。当然,这些问题在Dragon 主题中已经都解决了,欢迎大家前往购买体验~
Dragon 主题:Wordpress 商城会员多功能高级主题 V3.8.0[出售]
Bug 1:分页导航的问题
5 月 17 日,浏览同样使用 tinection 主题的博客时,发现分页导航有个小问题(如下图:1 和 5 之间不显示省略号“…”),于是看了看自己的,再返回知言的博客看了看,都有这个问题,那就应该是 tinection 主题的通病了。
查看了下源代码,发现在主题的 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 自定义分页导航方法大全(全网最全版)
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:部分主机上注册验证码不显示的问题
问题描述:在某些主机上,点击注册时验证码不显示,或需要点一下验证码才显示。
解决方法:来自 @知言
首先,将主题里 includescaptcha.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);
然后,如果验证码需要点击一下才显示的话,就再将主题里的 includesloginbox.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_signon
和wp_set_auth_cookie
这 2 个函数,然后参照下文方法来修改:
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');
本文收集自互联网,转载请注明来源。
如有侵权,请联系 wper_net@163.com 删除。
还没有任何评论,赶紧来占个楼吧!