WordPress教程
模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。
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 ...
...
WordPress教程:天下武功,唯快不破!我们的wordpress网站也不意外,也需要访问速度快,那么怎样才能使自己的wordpress站访问速度尽可能的快呢?
模板兔在这里说明几点加速网站的因素:
1、服务器
你的服务器质量是对网站访问速度有很大的影响的,我们一般推荐的服务器配置是2核4G1M,这样的配置前期对一般的网站来说足够。
2、CDN加速
说到CDN加速,可能有些人对CDN的理解不一样,其实CDN分两种,一种是静态资源加速(把图片、js、css等一些静态资源放到第三方存储比如阿里云OSS、七牛云存储等,这样用户访问网站时加载的图片jscss就不是请求网站服务器,这样可以大大节省服务器资源,提升网站加载速度),另一种是域名CDN解析(通过把域名解析到CDN...
WordPress教程:在我们wordpress开发中经常会遇到编辑器的问题,wordpress自带有个编辑器wp_editor,编辑器有上传图片功能,但是是需要添加到媒体且需要弹出媒体库的窗口,这样对于在前台投稿的用户来说可能不太友好。那么我们如何能在前台添加一个极简且带图片上传的编辑器呢?这里模板兔给大家讲解一下。
首先调用编辑器,我们需要对编辑器上面的按钮简化一下。
wp_editor( '', 'task_content', task_editor_settings(array('textarea_name'=>'content', 'height'=>250, 'allow_img'=> 1)) );
然后我们定义一些函数以及处理上传的逻辑
function task_editor_settings($args = array()){
$allow_img = isset($args['allow_img']) &&...
WordPress教程:在我们做wordpress网站时很多时候都需要筛选功能,筛选的条件越多,得到的结果就越精确,这里模板兔就说明一下常见的自定义分类法筛选。
至于怎么创建自定义分类法就不多说了,核心筛选代码:
array_push($args['tax_query'], array('taxonomy' => 'size','field' => 'term_id','terms' => $_GET['sz']) );
这里的size就是自定义分类法,传过来的sz参数就是分类法的term_id。
$arms = array_merge($args, $wp_query->query);
query_posts($arms);
这里就是执行结果。
如果有需要给自己的网站加自定义分类法筛选或者多条件筛选的用户,可联系我们进行开发。
WordPress教程:今天给主题加了一个发布文章奖励积分的功能,配合erphpdown实现用户前台投稿通过后奖励积分。
顺便起底一下关于wordpress发布文章的一些HOOK:
publish_post:参数一个($post_ID),点击发布文章时就会被触发;
save_post:参数一个($post_ID),发布或更新文章时就会被触发;
edit_post:参数两个($post_ID, $post),只要编辑已经存在的文章就会被触发;
publish_future_post:参数一个($post_ID),到定时发布文章设定的时间点就会被触发,如果设定的时间早于发布时间,不会被触发;
transition_post_status:参数三个($new_status, $old_status, $post),实现功能比较强大,可以根据文章发布状态的变化实现一些功能。
{$o...
WordPress教程:前些日子模板兔给用户二次开发一个小功能,需要制作一个页面模板,输入关键词后,页面会输出相关关键词的文章。这里就需要给这个页面模板添加一个自定义字段来设置关键词。
那么后台如何判断页面是使用了此页面模板呢?我们可以用到函数get_page_template_slug。
add_action( 'admin_menu', 'keywords_page_metabox' );
function keywords_page_metabox() {
global $pagenow;
if($pagenow == 'post.php'){
if(isset($_GET['post']) && isset($_GET['action']) && $_GET['action'] == 'edit'){
if(get_page_template_slug($_GET['post']) == 'template/keywords.php'){
add_meta_box( 'keywords-postmeta-box','文章...
WordPress教程:最近给一个客户定制开发一个wordpress主题,其中需要在搜索页面加一个搜索记录,这个记录我直接保存在用户浏览器本地存储。
通过js存储,核心代码如下:
<script>
function storageObj(obj) {
var checkedIdStr = JSON.stringify(obj);
sessionStorage.setItem("search_logs", checkedIdStr);
};
var arrBefor = [];
if(sessionStorage.getItem("recode_search_logs")){
arrBefor = JSON.parse(sessionStorage.getItem("search_logs"));
}
<?php if(isset($_GET['s']) && $_GET['s']){?>
arrBefor.unshift({"key":"<?php echo $_GET['s'];?>", "date":"<?php echo date("m-d H:i");?>"});
<...
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_...