WordPress教程
模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。
WordPress教程:最近模板兔在一次开发中遇到一个问题,那就是通过查询mysql比较字符串大小时无效,很奇怪的是明明20小于105,却会判断成真。
select post_id from $wpdb->postmeta where meta_key='down_price_limit' AND meta_value > '".$totalchong."'
其中meta_value有篇文章是20,$totalchong是105,居然查询出来了,这显然是不对的,那么问题出在哪呢?
可能是比较的字符串格式类型不正确导致的,所以我把语句改成了这样。
select post_id from $wpdb->postmeta where meta_key='down_price_limit' AND meta_value+0 > '".$totalchong."'
meta_value后面+0就可以强制转成数字类型,再进行比较即可。
WordPress教程:现在https已经是趋势了,如果你的站还是http那你就out了,一般大厂都有免费的SSL单域名证书,建议大家网站都使用SSL,相对安全些还可以有效防住域名被劫持。
那么问题来了,有的网站从http换到https后,wp后台打不开了,怎么办呢?这个时候模板兔建议大家是先不要开启强制SSL,然后通过http进后台,把【设置-常规】里的两个URL都改成https,再重新登录后看是否正常,待一切正常了再开启强制SSL。
其实,模板兔还遇到过一种情况就是从Http换成https后前台样式错乱了,就算后台设置的是https的URL,前台加载的css地址依旧是http,这样就很费解,不过可以通过插件来解决,好像有个插件叫 really simple ssl或者wp force ssl。
WordPress教程:现在有很多人都在做知识付费,视频点播是比较常见的一种模式,通过售卖自己录制的视频来变现。但是对于视频这种可复制的文件如何做到防止盗链呢?我们可以利用阿里云视频点播VOD来实现视频转码加密成m3u8格式,还可以实现试看几分钟,VIP付费观看完整视频。
我们的一款erphpdown addon video插件已经实现了这个功能,使用此插件建议将视频转码(阿里云点播的转码是额外计费的),当然如何不转码的话,可以通过配置跨站域名以及域名白名单,这样也可以有效的防止视频被盗链。
接下来主要讲一下如何配置阿里云视频点播。注意:阿里云点播是按视频流量+视频转码大小收费的。
1、配置点播的加速域名
2、回源配置
3、缓存配...
WordPress教程:在WordPress后台上传视频或者图片时没法上传功能?对于大多数初学者来说,视频或者图片上传错误可能会让人很困惑。无法上传文件是WordPress中最常见的问题之一,那么怎么解决呢?
首先可以检查下网站是否装有防火墙或者域名有CDN解析,这些可能会拦截上传请求。如果这些都关了还是没法上传,可以往以下几点检查。
以下是常用的几种解决方案:
1、修改php.ini配置文件 upload_max_filesize、post_max_size、memory_limit。
查找 php.ini 的位置
使用命令:php --ini
2、此时再上传如果还是提示同样的错误,可能是因为nginx还限制了请求体大小,需要在nginx的配置文件中添加:
client_max_body_size 50m;
3、此时再上传...
WordPress教程:本文讲的是wp分类页面如何只显示置顶的文章,而不是显示置顶文章在最上面哦。
可将以下代码加入到主题的functions.php最后面:
/**
* Category Archives: Only display sticky posts for each category term
*/
add_action( 'pre_get_posts', function( \WP_Query $q )
{
if( ! is_admin() && $q->is_category() && $q->is_main_query() )
{
$sticky_posts = get_option( 'sticky_posts' );
if( ! empty( $sticky_posts ) )
$q->set( 'post__in', (array) $sticky_posts );
}
} );
WordPress教程:这是一款由彩虹原创开发的,基于ThinkPHP6.0框架的微信公众号多域名回调系统。
微信公众号后台默认只能授权2个网页域名,用本系统可突破这个限制,用同一个公众号对接无限多个网站。网站后台支持回调域名白名单的管理,以及登录记录的查看。
本系统还有微信access_token的获取功能,可让当前站点作为中控服务器统一获取和刷新access_token,其他业务逻辑站点所使用的access_token均调用当前站点获取,这样可避免各自刷新造成冲突,导致access_token覆盖而影响业务。
部署方法:
· 运行环境要求PHP7.4+,MySQL5.6+
· 设置网站运行目录为public
· 设置伪静态为ThinkPHP
· 访问网站,会自动跳转到安装页面,根据提示安装完成
...
WordPress教程:我们在做网站时为了加速网站加载速度,一般会将图片使用第三方云存储+CDN来实现加速,但是这种CDN往往是基于流量收费的,那么我们如何用自己的另一台服务器主机来专门存储网站媒体库里图片呢?(当然前提是这台服务器不限流量且速度良好,否则会导致很卡。)
这里模板兔简单说下如何通过FTP来远程存储图片(上传到媒体库里的文件)。
首先,需要安装一个插件wp-ftp,配置好插件,网站需要将30000-63500端口开放,然后另一台存储图片文件的服务器主机要开启FTP以及21、22端口,这样就可以了。
教程毕竟粗略,请自己下载插件后配置!
wp ftp插件下载:
WordPress教程:最近看到wordpress后台的健康检测提示date_default_timezone_set()时区问题可能影响文章发布日期,经过检查是由于加了以下代码
add_filter('init','erphpad_checking');
经过模板兔的测试,这两个钩子都是作用于wordpress网站全局,但是照目前测试的结果来看,wp是仅作用于前台,init是既作用于前台也作用于后台。所以将上述代码的init改成wp就解决了健康检测的问题。
WordPress教程:最近出现一个莫名其妙的问题,那就是模板兔给客户定制的网站的paypal接口突然就报错了,提示:
L_ERRORCODE0:
10002
L_SHORTMESSAGE0:
Authentication/Authorization Failed
L_LONGMESSAGE0:
You do not have permissions to make this API call
我仔细检查了代码,逻辑没有任何问题,百思不得其解。最后发现是多了一个无用的参数变量$subject,去掉这个变量就正常了,很神奇的bug。
如果你也遇到此来error,代码逻辑没有任何问题的情况下,不防从变量名下手找bug。
WordPress教程:最近模板兔在给某个客户定制一款反链管理的插件,里面有需要自动检测反链友链是否存在,那么如何检测反链呢?可以通过PHP的Dom来判断a标签的href是否存在。
下面给出核心代码:
$body = 'test <a href="https://www.mobantu.com">mobantu</a> test';//获取对方网站的html
$dom = new DomDocument();
$dom->loadHTML($body);
$xpath = new DOMXPath($dom);
foreach ($xpath->query('//a[contains(@href, "https://www.mobantu.com")]') as $a) {
echo 'success';
}
通过上面的foreach可以得知是否含反链。
WordPress教程:WordPress网站里如何禁止F12与浏览器审查元素,防止别人扒你代码。将一下js代码加入到主题的footer.php文件的</body>标签前。当然,你可以加上禁止右键的相关代码,那就更完美。
js代码如下:
<script>
document.onkeydown = function () {
if (window.event && window.event.keyCode == 123) {
//alert("F12被禁用");
event.keyCode = 0;
event.returnValue = false;
}
if (window.event && window.event.keyCode == 13) {
window.event.keyCode = 505;
}
if (window.event && window.event.keyCode == 8) {
alert(str + "n请使用Del键进行字符的删除操作!");
window.event.returnValu...
WordPress教程:一般我们获取wordpress文章的上下篇都是用get_previous_post()与get_next_post()函数来获取,那么如何获取同分类下的上下篇文章呢,只需要给这俩函数加一个参数即可。
使用
get_previous_post(true)
get_next_post(true)
即可,获取到的就是一个post对象。
这里获取到的是分类1 or 2的文章,如果你想获取分类1 and 2的文章,那么得这样。
// Create a new filtering function that will add our where clause to the query
function date_filter_where( $where = '' ) {
global $post;
$where .= " AND post_date >= '".$post->post_date."'";
return $where;
}
//then create your own get previous post function...
WordPress教程:我们在wordpress主题里增加了自定义分类法后,希望在后台文章列表里可以通过这个分类法来筛选出文章,方便管理者查看,那么如何显示这个自定义分类法筛选呢?
可以在主题的functions.php里加入以下代码:
add_action( 'restrict_manage_posts', 'mobantu_post_filter_by_taxonomies' , 10, 2);
function mobantu_post_filter_by_taxonomies( $post_type, $which ) {
if ( 'post' !== $post_type )
return;
$taxonomies = array( 'topic' );//这里的topic就是自定义分类法
foreach ( $taxonomies as $taxonomy_slug ) {
$taxonomy_obj = get_taxonomy( $taxonomy_slug );
$taxonomy_name = $taxonomy_obj->labels->name;
$te...
WordPress教程:wordpress如何基于当日浏览增量来排序文章而不是基于所有浏览量,那么我们这里需要记录每天的浏览量。
首先需要安装一个插件,wordpress popular posts。
然后在主题的functions.php里加上以下代码:
function custom_wpp_update_postviews($postid) { // Accuracy: // 10 = 1 in 10 visits will update view count. (Recommended for high traffic sites.) // 30 = 30% of visits. (Medium traffic websites.) // 100 = Every visit. Creates many db write operations every request. $accuracy = 50; if ( function_exists('wpp_get_views') && (mt_rand(0,100) < $accuracy) ) { // Remove or comment out lines that y...
WordPress教程:wordpress的get_users是获取用户列表的,我们可以获取所有角色是author的用户,但是这个排序却没有基于最新发布文章时间(get_users order by author last post date)来排序用户列表的。
我们可以通过以下函数来实现:
function get_users_ordered_by_post_date($args = '') {
// Prepare arguments
if (is_string($args) && '' !== $args)
parse_str($args, $args);
$asc = (isset($args['order']) && 'ASC' === strtoupper($args['order']));
unset($args['orderby']);
unset($args['order']);
// Get ALL users
$users = get_users($args);
$post_dates = array();
if ($users) {
// For EACH user ...
...