WordPress教程
模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。
WordPress教程:对于WordPress新手来说,后台的菜单导航设置是很让人头疼的,毕竟它与一些国内CMS的设置有所不同,但正因为它的不同,才是它强大的地方,下面模板兔来说说菜单的设置方法。
首先,我们要清楚的是WordPress的菜单有两个概念,一个是菜单位置,一个是菜单集合,我们要做的就是把某个菜单集合绑定到某个菜单位置上,这样就让菜单显示在该显示的地方了。
图中,主导航与分类导航是菜单位置,main与cat是你建的菜单的名称,也就是菜单集合,把制定的菜单集合指派给指定的位置,就OK了。
注意不要勾选自动添加页面。
WordPress教程:我们在wordpress主题开发过程中会给网站设置双栏或者三栏,有时候边栏内容很多时,用户看不完边栏内容会影响内容传播,那么我们需要既要让边栏永驻又得让边栏的内容全部展现在用户可见的区域里,怎么办?
模板兔推荐大家使用一款jQuery插件,Theia Sticky Sidebar,具体介绍:https://github.com/WeCodePixels/theia-sticky-sidebar。
使用方法
<div class="post-content">文章主要内容</div>
<div class="sidebar">
<div class="theia-Sticky-Sidebar">边栏内容</div>
</div>
if($('.sidebar').length){
$('.theia-Sticky-Sidebar').theiaStickySidebar({"containerSelec...
WordPress教程:本文末尾有wordpress安装视频教程、modown主题视频教程与导入数据。
安装
将从模板兔购买的主题下载包解压出来,然后在网站后台的 外观-主题 里上传解压出来的里面的主题文件modown.zip,上传后启用即可。然后将里面的oauth文件夹放至网站根目录(与wp-content、wp-admin同级),即类似 www.t.com/oauth/ 路径存在。
顶部
后台的外观-菜单 设置下导航菜单,然后 主题设置-页头 里有一些选项开关可以看看。通知在后台的【工具】里可以群发通知。
底部
外观-小工具 设置下底部小工具,然后 主题设置-页脚 里有一些选项开关可以看看。
首页
主题的首页可以使用默认首页,然后通过主题设置或者小工具来快速添加首页的分类模块,当然也可以...
WordPress教程:这里以126邮箱为例,其他邮箱类似。步骤如下:
1、安装SMTP插件,链接: https://pan.baidu.com/s/1-LbP_zXM0j6QBW7yakcE6Q 密码: 6g3y
2、进126邮箱,看到顶部的菜单栏,点击 设置 - POP3/SMTP/IMAP
3、进wordpress后台,设置 - SMTP
username就是你的邮箱,password就是上面设置的授权密码,Send e-mail也是你的邮箱,name就是你网站名称。
最后保存,就OK了,只要你的主机开了发邮件的端口,你的账号填写无误,系统就应该可以发邮件了,否则请联系主机商看主机是否支持发邮件。
WordPress教程:随着模板兔开发的Erphpdown插件越来越普及,市面上的支付接口申请难度越来越大,又有很多用户向我们推荐集成有赞云支付接口,所以我们今天集成了一下,经亲自测试后可行。
注意:由于近期我们得知有赞云接口申请的政策变动,新用户无法再免费使用其接口了,请不要再通过本教程申请接口了哦!
现在说下接口申请的步骤:(此方法已不再适用)
1、手机扫码下载并安装“有赞微小店”APP
2、注册APP账号(可以在APP里 小店 - 店铺管理 认证下账号)
3、用注册的账号登录有赞云(youzanyun.com),并完善信息
4、创建应用(类型选择“自用型”)
5、授权绑定(绑定你的微小店店铺,直到授权成功)
注意:只要授权成...
WordPress教程:WordPress 后台编辑器上传视频的时候是以video短代码返回到内容里的,这样子有些小程序没法识别,所以需要把短代码改成video标签。
将以下代码加入到主题的functions.php里:
remove_shortcode( 'video', 'wp_video_shortcode' );
add_shortcode( 'video', 'MBT_video_shortcode' );
function MBT_video_shortcode( $attr, $content = '' ) {
global $content_width;
$post_id = get_post() ? get_the_ID() : 0;
static $instance = 0;
$instance++;
$override = apply_filters( 'wp_video_shortcode_override', '', $attr, $content, $instance );
if ( '' !== $override ) {
return $override;
}
$video = null;
$def...
WordPress教程:首先在Godaddy付款购买SSL证书,成功之后打开管理面板,找到刚购买的SSL证书,点击新建证书,这个时候Godaddy会让提供CSR文件内容,可以通过下面的命令行生成csr内容:
openssl genrsa -des3 -out <name of your certificate>.key 2048
openssl req -new -key <name of your certificate>.key -out <name of your certificate>.csr
将上面替换成真实的文件名,第一个命令行生成的是证书,在第二步的时候提示输入一些信息,其中Common Name (e.g. server FQDN or YOUR name) 是需要使用的证书的域名。对于普通的DV(域名验证) SSL证书 只需要保证CN(Common Name)字段填上你的域名即可,而对于高级的OV(组织验...
WordPress教程:最近给一个客户二次开发主题,需要加多条件筛选,其中有个筛选就是根据文章的某个post_meta值进行排序,一般的方法是:
$args = array(
'paged' => $paged
);
$args['meta_key'] = 'favorites'; //这个就是post_meta
$args['orderby'] = 'meta_value_num';
query_posts($args);
但是以上代码有个问题,当文章没有此post_meta时,是不会显示出来的,这个很尴尬吧~那个解决方案如下:
$args = array(
'paged' => $paged
);
//$args['meta_key'] = 'favorites'; //这个就是post_meta
$args['meta_query'] = array();
array_push($args['meta_query'], array(
'relation' => 'OR',
'exist_clause' => arra...
WordPress教程:将以下php代码复制到当前主题目录下的functions.php中,即可让WordPress支持使用中文用户名注册和登录:
function MBT_sanitize_user ($username, $raw_username, $strict) {
$username = wp_strip_all_tags( $raw_username );
$username = remove_accents( $username );
$username = preg_replace( '|%([a-fA-F0-9][a-fA-F0-9])|', '', $username );
$username = preg_replace( '/&.+?;/', '', $username );
if ($strict) {
$username = preg_replace ('|[^a-z\p{Han}0-9 _.\-@]|iu', '', $username);
}
$username = trim( $username );
$username = preg_replace( '|\s+|', ' ', $username );
return $username;
...
WordPress教程:最近给用户定制了一款wordpress主题,其中有个需求就是首页与分类页的文章列表里,要是有相同的custom taxonomy,仅显示一篇。(由于网站是教程类网站,可能一个教程有多篇文章连载,要是把每篇文章都显示在列表里,显得有些臃肿,所以这里给文章加了一个自定义分类法-专辑,每个专辑仅在列表里显示一篇。)
于是模板兔google了大量教程,都没有一个完美的答案,但是根据零散的教程,拼凑出了最终完美的代码。
此教程属于高阶教程,需收费!有类似需求的小伙伴可以咨询我们~
WordPress教程:有时候我们给网站增加了一些功能,比如在线充值,那么需要在后台能看到用户的充值记录,所以需要添加一个后台菜单。
add_action('admin_menu', 'credit_logs_page');
function credit_logs_page() {
add_menu_page('充值记录', '充值记录', 'manage_options', 'CREDIT_LOGS', 'credit_logs');
add_submenu_page( 'CREDIT_LOGS', '购买记录', '购买记录','manage_options', 'ORDER_LOGS', 'order_logs');
add_submenu_page( 'CREDIT_LOGS', '后台充值', '后台充值','manage_options', 'CREDIT_ADD', 'credit_add');
}
function credit_logs(){
global $wpdb;
$total = $wpdb->get_var("SELECT COUNT(ID) FROM $wpdb-&g...
WordPress教程:以前做微信登录仅限于微信客户端打开网页,一直用的都是微信公众号接口的网页授权得到openId来记录区别的,后来要求在PC端网页也使用微信登录,即微信扫码登录,结果发现得到的openid是跟在网页授权里得到的openid不同。这就导致用户通过微信客户端授权登录与网页扫码登录生成的不是同一个账号的问题。
那么如何解决这个问题?这就牵扯到微信的UnionID机制。
关于UnionID机制:
1、请注意,网页授权获取用户基本信息也遵循UnionID机制。即如果开发者有在多个公众号,或在公众号、移动应用之间统一用户帐号的需求,需要前往微信开放平台(open.weixin.qq.com)绑定公众号后,才可利用UnionID机制来满足上述需求。
2、UnionID机制...
WordPress教程:目前,我们开发的一款wordpress插件erphpdown已经广受大家喜爱,在功能方便也基本满足了多数人的要求,不过有些用户可能对下载地址一栏输入的方式有点不习惯,比如:用户的资源是百度网盘,在网盘那边直接复制链接+密码得到的是类似 (链接: https://pan.baidu.com/s/1bo88u3X 密码: h9mx)这样的字符串,那么怎样直接把这个字符串输入到erphpdown的下载地址框里就OK了呢,这里模板兔提供一个自动解析的方法。
<?php
$regex='/((http:\/\/|www\.|https:\/\/)(\w+|\.|\?|\=|\-|\/|\&|\:|\d+)+)/';
echo preg_replace_callback($regex,function($matches){
if(!empty($matches[0]) && (strstr($matches[0],'http://')||...
WordPress教程:在wordpress里有个函数wp_link_pages是给文章内容分页的,可是默认的只支持要么显示数字,要么显示下一页按钮,而没有同时显示的,肿么办,将以下代码加入主题的functions.php里即可:
add_filter('wp_link_pages_args', 'wp_link_pages_args_prevnext_add');
function wp_link_pages_args_prevnext_add($args){
global $page, $numpages, $more, $pagenow;
if (!$args['next_or_number'] == 'next_and_number')
return $args; # exit early
$args['next_or_number'] = 'number'; # keep numbering for the main part
if (!$more)
return $args; # exit early
if($page-1) # there is a previous page
$args['before'] ...
WordPress教程:最近给一个客户定制一款wordperss主题,其中需要一个显示一个月内的热门文章,模板兔相信这个功能很常见,简单点的就是根据访问量来排序了,下面核心代码如下:
$date_query=array(
array(
'column' => 'post_date',
'before' => date('Y-m-d',time()+3600*24),
'after' =>date('Y-m-d',time()-3600*24*30)
)
);
$args = array(
'order' => 'DESC',
'orderby' => 'meta_value_num',
'cat' => $cat,
'meta_key' => 'views',
'date_query' => $date_query,
'showposts' => $limit,
'ignore_sticky_posts' => 1
);
query_posts($args);