WordPress教程
模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。
WordPress教程:WordPress的搜索一直是一个很占内存的功能,如果你的文章很多,那么执行一次搜索会相对卡顿,那么我们如何尽可能的防范一下呢?比如机器人扫描到了搜索页面,那将可能直接导致内存爆满mysql进程被终止。
这里,我们可以加一个搜索验证码,用户在第一次搜索时需要进行简单的人机验证。一来这样可以有效防止恶意扫描导致内存崩溃,二来可以防止恶意请求关键字生成结果页面。
模板兔写了一个简单的验证机制,可将下面代码加到主题的functions.php里即可。
/*
Plugin Name: 搜索验证码
Plugin URI: https://www.mobantu.com
Description: WordPress 搜索验证码
Version: 1.0
Author: 模板兔
Author URI: https://www.mobantu.com
*/...
WordPress教程:最近模板兔给客户二次开发任务插件(Erphp Task Pro),需要在任务大厅里加一项用户权限筛选,哪些任务仅限制VIP用户投标,除了每个任务可单独设置是否仅VIP投标外,插件还增加了一项设置就是金额高于多少时仅限VIP投标,所以在进行筛选的时候需要对预算金额进行比较,但是compare用>=时始终不生效,很奇怪。
最后,看了官方文档后发现还有一个参数type,设置成numeric后就可以进行比较了。
部分代码如下:
array_push($args['meta_query'],
array(
'relation' => 'OR',
array('key' => 'task_bid_vip','compare' => '>=','value'=>'1','type' => 'numeric'),
array('key' => 'task_budget_money','compa...
WordPress教程:最近模板兔发现wordpress5.9+版本会在前台头部插入了global-styles 内联样式,并向底部插入了很多的 svg 图像,对于我们来说这个些代码显得有些多余了,因此决定把这些去掉。
在主题的functios.php添加
function mbt_remove_global_styles(){
wp_dequeue_style( 'global-styles' );
}
add_action( 'wp_enqueue_scripts', 'mbt_remove_global_styles' );
那么,如何移除svg图像呢?在使用主题的根目录下新建一个theme.json文件,写入下面代码
{
"version": 1,
"settings": {
"color": {
"duotone": null
}
}
}
一键移除内联样式和svg图像
function remove_global_styles(){
remove_action('wp_enqueue_scripts', 'wp_...
WordPress教程:相信很多人网站都遇到过报502 bad gateway错误,那么究竟是什么导致的呢?
据模板兔了解,很多时候WordPress网站莫名其妙报502错误很有可能是PHP版本导致,比如你一开始用的PHP7.4报502,那么换成PHP8.0可能就解决了问题。至于为什么有的网站会出现,有的网站不会出现,这里可能与服务器系统版本有关,比如今天模板兔给一个客户安装了一个wp,安装完成后就直接报502了,没有一点点防备!服务器系统用的是centos 8.3,php用的7.4,是直接装的宝塔面板,很奇怪吧。百思不得其解,然后把PHP换成8.0就解决了问题。
总之,具体什么原因,说不清,但是当你刚安装完wordpress就遇到502,不妨试试换PHP版本,大大的有效!当然也可以重启下nginx...
WordPress教程:WordPress的is_home()或is_front_page()是判断是否为首页的函数方法,有时候我们在进行WordPress开发时出现不生效,或者明明不是首页的页面,is_home()却判断成了首页。那么,究竟为何会出现这个奇怪的现象呢?
经模板兔研究发现,原因可能出在is_home()之前有个 query_posts(),然后又使用了wp_reset_query()(在单独页面里使用这个,会造成这个bug)。 is_home() 函数在首页的时候会返回一个 true 来判断,而 query_posts()会阻断这一判断。
解决方法是在 is_home()之前加一个 wp_reset_query()。例如:
wp_reset_query(); if ( is_home() ) { echo 'is mobantu homepage'; }
WordPress教程:有时候由于网站域名更换,可能涉及到需要更换一些资源的下载地址域名,那么如何批量替换erphpdown插件的下载地址域名呢?
新建一个php文件,将以下代码放进去保存,然后将这个php文件放到网站根目录,最后通过域名直接访问这个文件,页面打印出success时说明替换完了。
<?php
require( dirname(__FILE__).'/wp-load.php' );
$result = $wpdb->query("update $wpdb->usermeta set meta_value=REPLACE(meta_value, 'old.mobantu.cn', 'new.mobantu.cn') where meta_key='down_url' ");
if($result){
echo 'success';
}
WordPress教程:有时候我们想对指定搜索关键词进行更好的结果显示聚合,可能会需要把搜索结果页跳转到指定的归档页面,那么如何实现呢?
下面模版兔来写出主要的方法代码:
function mobantu_search_jump( $query, $error = true ) {
if (is_search() && !is_admin()) {
$jump = 0;$url = '';
$epd_game_search = get_option('epd_game_search');
if($epd_game_search){
$cnt = count($epd_game_search['buy']);
for($i=0; $i<$cnt;$i++){
if( strpos($query->query['s'], $epd_game_search['buy'][$i]) !== false ){
$jump = 1;
$url = $epd_game_search['get'][$i];
break;
}
}
}
if($jump==1){
$query->is_search =...
WordPress教程:安装imagick
宝塔里PHP里可以安装扩展imagick。
安装ghostscript
https://github.com/ArtifexSoftware/ghostpdl-downloads/releases/download/gs9550/ghostscript-9.55.0.tar.gz
安装很简单,将下载的source code(tar.gz格式)放到服务器任意一个位置
# tar -xzvf ghostscript-9.55.0.tar.gz
# cd ghostscript-9.55.0
# ./configure
# make
# make install
装完之后输入查看是否安装成功,如果输入下面这个命令会显示版本号,说明安装成功。
# gs --version
php代码
function pdf2png($pdf,$path,$page=0)
{
if(!is_dir($path))
{
mkdir($path,0777,true);
}
if(!extension_loaded('imagick'))
{
echo '没...
WordPress教程:最近模板兔给客户做了一个针对OSS鉴权下载的功能(OSS下载加密)。就是阿里云OSS的bucket是私密的,为了防止下载链接被盗用,需要结合erphpdown插件做鉴权下载。这样就算别人知道了你文件在OSS的下载地址(例如:https://mobantu.oss-cn-guangzhou.aliyuncs.com/test/erphpdown.zip)也是无法下载的。
当然,下载地址里还是填OSS的下载地址,只是在erphpdown跳转处理下载逻辑时会自动做鉴权加上参数(例如:https://mobantu.oss-cn-guangzhou.aliyuncs.com/test/erphpdown.zip?OSSAccessKeyId=xxxxx&Expires=1644376819&Signature=ooooo)。
代码示例如下:
require ERPHPDOWN_PATH.'/aliyun-oss-php-sdk/autoload.php';
use ...
WordPress教程:最近有人找模板兔二次开发modown主题,需要修改评论显示,要不影响主题升级的情况下修改,那么需要用到子主题。
怎样才能用子主题来覆盖默认的评论模板函数comments_template引用的模板文件呢?
将以下代码加到子主题的functions.php里,然后子主题里创建一个comments-new.php文件即可。
add_filter( "comments_template", "modown_child_comment_template" );
function modown_child_comment_template( $comment_template ) {
global $post;
if ( !( is_singular() && ( have_comments() || 'open' == $post->comment_status ) ) ) {
return;
}
return dirname(__FILE__) ."/comments-new.php";
}
WordPress教程:有很多WordPress博客的固定链接中使用了文章ID,但是WordPress由于种种原因导致了文章ID不连续的问题,也经常有博友在论坛中提问要解决这个问题,但是很少能够得到他们满意的答复。今天我就来告诉你如何完美的解决这个问题,说是完美,可能有点过了,WordPress 3.0 之后的版本都会有个自动草稿,每发表一篇文章就会占两个ID号,目前还没有禁用的方法。还请继续往下看如何一定程度上解决文章ID不连续的问题。
一、禁用文章修订版
所谓的文章修订版就是你每次修改一次文章,它都会自动帮你保存修改之前的文章版本,专业术语叫做版本控制,这样保证了在误修改的情况下可以还原之前的内容,这个在维基文档的维护方面是有很大帮助的,但是作为我...
WordPress教程:WordPress在采集文章时,需要插入Erphpdown插件的对应字段,这里给出常用字段名以及值。
收费模式
字段:erphp_down,值:1(下载)、2(查看)、3(部分查看)、5(免登录,即将废弃)、6(发卡)
这里需要注意的是,为了兼容老旧版本的数据,收费模式除了设置erphp_down意外还需要设置一个字段。
下载为start_down:yes,查看为start_see:yes,部分查看为start_see2:yes,免登录为start_down2:yes
VIP优惠
字段:member_down,值的话这里仅列举常用的。
VIP专享:4,包年VIP专享:8,终身VIP专享:9,VIP免费:3,包年VIP免费:6,终身VIP免费:7,VIP 5折:2,VIP 8折:5
价格类型
字段:down_price_type
多价格:1,...
WordPress教程:一直以来关于WordPress投稿者无法上传图片的问题都困扰着我,上传图片的权限给了,而且在投稿页面也显示出来了添加媒体的按钮,但是就是点击添加媒体上传图片后提示:抱歉,您不能添加附件到此文章。
关于这个提示,百度了很久也没有相关的文章,最后想肯定很是缺少了什么权限,于是就先装了一个WordPress用户权限管理插件:WPFront User Role Editor、User Role Editor插件启用后可以很方便的对某个用户角色添加或减少指定的权限。
于是我就对投稿者角色里的权限一个一个的尝试开启,然后看这个错误提示是否是存在,最后功夫不负有心人,终于上我试出来了,是确实两个关于页面编辑的权限,这两个权限开启后,问题彻底解决了,如下图红...
WordPress教程:安装web
首先,准备两个域名及web环境,我的测试环境是宝塔。
主站A
域名:a.test.com
数据库名称:test
数据库用户:mytest
数据库用户密码:test123
数据表前缀:a_
从站B
域名:b.test.com
数据库名称:test
数据库用户:mytest
数据库用户密码:test123
数据表前缀:b_
先安装A站,使用上述A站配置信息,安装完毕后,再安装B站,B站也使用上述信息。注意:为了实现数据共享,我们必须将两个站的数据表都放在同一个数据库中,上面我用的test数据库。
修改wordpress配置
为实现共用用户数据,我们必须让两个站使用的数据表都为a_user与a_usermeta。或者都使用b_user与b_usermeta,我这里使用的A作为主站,所以我需要把B...
WordPress教程:有时候我们需要在wordpress网站里无感植入一条广告,就是样式与普通文章没有区别,用户点击就跳到设置的广告外链页面。
代码如下:
add_filter('the_permalink', 'su_jump_link');
function su_jump_link( $url ){
global $post;
$su_jump = get_post_meta($post->ID,'su_jump',true);
if($su_jump){
return $su_jump;
}
return $url;
}
你需要给文章添加一个自定义字段用户填写外链,例如这里的su_jump