WordPress教程
模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。
WordPress教程:在我们开发模板的过程中,难免会制作一些首页模板,如果这个首页模板是显示文章列表的,那么必定就会显示分页。
今天模板兔在测试的过程中发现分页失效,将页面不设置为首页时分页又正常,感觉很奇怪。
我们常用的获取当前页面page数的方法是:
$paged = (get_query_var('paged')) ? get_query_var('paged') : 1;
所以模板兔怀疑当把页面设置为首页时,传入的参数不是paged,那会是什么呢?联想到可能是page,所以测试了一下,果不其然。
所以获取当前page数是使用以下代码:
if(is_front_page()){
$paged = (get_query_var('page')) ? get_query_var('page') : 1;
}else{
$paged = (get_query_var('paged')) ? get_query_var(...
WordPress教程:有时候我们需要给文章添加自定义字段来丰富文章内容的显示,当用到可视化编辑器的字段内容时,前台的输出挤到一起了,没有自动换行(自动加<p>标签),那么如果实现自动换行呢?
使用函数wpautop即可,例如:
$con = get_post_meta(get_the_ID(),'mobantu',true);
echo wpautop($con);
WordPress教程:当我们开始做一个网站时,往往想先把网站的结构搭建清晰,链接伪静态规则就是很重要的一部分,好的伪静态规则,对搜索引擎抓取数据帮助也很大。
比如我们希望wordpress分类目录的页面地址是类似mobantu.net/wordpress/,也就是最后面带有一个斜杠,这样很清楚的知道这个是一个分类目录,文章详情页面地址是类似mobantu.net/wordpress/88.html,就是wordpress分类下的某文章。这种结构对于搜索引擎的抓取就很轻松,让爬虫很容易弄懂。
但是wordpress系统默认的分类目录后面不带斜杠,所以我们需要用到一个插件:Permalink Trailing Slash Fixer,后台插件里搜这个即可免费安装。
当然,如果你要去掉分类目录页面路径里category/wordpr...
WordPress教程:最近给一个用户写批量发布文章的插件,里面需要添加advanced custom fields自定义字段的文章属性,刚开始模板兔只是简单的用以下代码来添加字段值:
add_post_meta($post_id,'size',$size);
上面的size就是自定义字段的名称,这种逻辑理论上可行的,但是实际上却存在一个问题。由于使用的主题的文章详情页显示字段信息是通过advanced custom fields插件的方法来判断获取的,而上面的add_post_meta只是直接给文章添加了字段,并没有经过advanced custom fields插件,所以导致前台显示时没法通过advanced custom fields的方法获取到该文章的字段值。
那么究竟要用什么方法才能实现呢?我们需要用到插件的一个函数update_field,这个函数需...
WordPress教程:假如你网站的文章内容全是图片,而且图片很多,平铺下去可能显示的并不友好,而且图片大的时候很耗带宽,文章多了的话每个修改也很费劲,那么怎么能将文章内容里的图片自动显示成相册呢,你可以使用我们的modown主题,然后用子主题修改一下single.php里的部分代码即可。此相册支持弹窗放大播放、VIP隐藏、试看几张、毛玻璃显示等。
<?php
preg_match_all('/<img[\s\S]*?src\s*=\s*[\"|\'](.*?)[\"|\'][\s\S]*?>/i', $post->post_content, $matches);
$match = $matches[1];
$imgs = '';
foreach ( $match as $attachment ) {
$imgs .= $attachment.',';
}
$imgs = rtrim($imgs,',');
if($imgs){
echo do_shortcode('[...
WordPress教程:当我们开发一款wordpress模板的时候,常常需要自定义一些主题设置来控制wp主题的功能,除了添加一些封装好的框架外,我们还可以利用wordpress本身的自定义功能来实现,下面模板兔给出一个示例教大家如何使用wp的自定义设置:
add_action( 'customize_register', 'modown_customize_register' );
function modown_customize_register( $wp_customize ) {
$wp_customize->add_section('modown_setting',array(
'title' => 'Modown附加设置',
'priority' => 101
) );
$wp_customize->add_setting( 'modown_setting_presale_tips', array(
'default' => '',
) );
$wp_customize->add_setting( 'modown_setting_pr...
WordPress教程:有时候,我们在前端写上传文件的功能时,不想弹出wordpress默认的媒体库窗口,而是直接通过自写的PHP代码实现上传,这种情况自定义上传的文件目录是很好实现的,但是这些上传的文件无法在后台的媒体库里找到,不容易管理删除。
那么如何实现在网站前台不弹出默认的媒体库窗口又能直接上传到媒体库呢?而且也支持一些CDN插件比如七牛云存储、阿里云OSS,下面模板兔教大家使用下面的代码来实现上传逻辑:
<?php
// WordPress environment
require( dirname(__FILE__) . '/../../../wp-load.php' );
$wordpress_upload_dir = wp_upload_dir();
// $wordpress_upload_dir['path'] is the full server path to wp-content/uploads/2020/...
WordPress教程:WordPress建站中,少不了要用到各种插件来丰富网站功能,下面模板兔来介绍下一些常用的插件,好的插件可以帮你更好的建设网站。
以下插件若没有提供下载链接,则均可在wordpress官方库里搜索下载。
Classic editor(经典编辑器):官方编辑器插件,如果你不习惯使用wordpress默认的后台编辑器,不防试试经典编辑器
No category base wpml:去掉网站分类目录路径里的category
Wp term order:对分类法(分类目录、标签、自定义分类法)进行排序显示
Custom post type permalinks:自定义文章类型的固定链接设置(伪静态)
Loggedin:限制用户同一账号同时登录的IP数
Wp user avatar:自定义用户头像
Wp clean up:清...
WordPress教程:我们在开发wordpress主题的过程中一般会对分类进行一些其他字段的设置来完成一些可控性的功能,需要给分类设置自定义字段。
比如我们希望某个分类下的文章的SEO标题不显示站名,这个是什么意思呢?一般来说,文章的标题组成为Post title - Sitename,我们需要某些分类的文章的标题只有Post title,可以用模-板-兔写的以下方法来实现。
首先我们给分类添加一个字段来控制是否启用上面说的那个功能。
add_action('category_add_form_fields','erphp_ct_add_category_field',20,2);
function erphp_ct_add_category_field(){
echo '<div class="form-field">
<label for="erphp_cat_title">标题去站名</label>
&l...
WordPress教程:WordPress做独立页面视频播放页面,需要使用到地址伪静态(mobantu.com/play/tset.html),主题的functions.php里面加
function MBT_rewrite_rule() {
global $wpdb;
$page_id = MBT_get_page_id_from_template('page-play.php');
$slug = get_post($page_id)->post_name;
add_rewrite_rule($slug.'/([^/]+).html$', 'index.php?page_id='.$page_id.'&v=$matches[1]','top');
}
add_action('init', 'MBT_rewrite_rule', 10, 0);
add_filter('query_vars', 'MBT_query_vars', 10, 1 );
function MBT_query_vars($public_query_vars) {
$public_query_vars[] = 'v';
return $public_query_vars;
}
独立播放页面通过$wp_qu...
WordPress教程:setup_postdate函数可以设置全局$post变量,使得自定义查询文章语句后也可以使用the_permalink()、the_title()等来直接获取文章信息,具体使用方法如下:
<?php
global $wpdb, $post; //注意这里要申明$post
$str = "SELECT $wpdb->posts.* FROM $wpdb->posts WHERE post_type = 'post' AND post_status = 'publish'";
$result = $wpdb->get_results( $str );
if ( $result ) {
foreach ( $result as $post ): //如果这里获取的是$post_id,可以$post = get_post($post_id);
setup_postdata( $post );
?>
<li><a href="<?php the_permalink()?>"><?php the_title();?></a></li&...
WordPress教程:最近有用户找我们模板兔(mobantu.com)开发了一个这样的功能:让erphpdown里的支付宝当面付使用独立域名(与网站域名不同,这样的用处就是网站不与支付宝做任何通信,而是通过另外一个域名作为通信媒介)。
为什么需要这样的功能?我考虑了一下,可能是由于网站域名的某些原因,站长不希望支付宝知道使用接口的真实网站域名。
那么,要实现这个功能,需要弄一个独立站B(当然你可以是子目录、二级域名什么的都行)专门当作支付宝与主网站A的通信桥梁,用户通过网站A在线充值时会跳到网站B(不同于网站A的域名),在网站B页面实现扫码支付,然后支付宝处理回调通知到网站B,网站B再通知主站A,这样就完成了整个充值过程。
有类似需求的...
WordPress教程:最近模板兔(mobantu.com)在给某个客户二次开发一款主题时需要自定义导航菜单的输出,来控制子菜单的显示隐藏。
有些地方,使用以下代码:
if ( $args->has_children ) {}
有些地方,使用以下代码
if ( $args->walker->has_children ) {}
以上两种可以分别尝试,看哪种会生效
WordPress教程:最近,模板兔(mobantu.com)给用户开发了一个游客相册预览几张图片的功能,意思就是未登录的用户可以浏览几张图片,其他图片显示为毛玻璃状态,登录后可正常浏览相册的全部图片。
涉及到给相册添加自定义字段的代码如下,加到主题的functions.php里:
add_action('print_media_templates', function(){
?>
<script type="text/html" id="tmpl-my-custom-gallery-setting">
<span class="setting">
<label for="gallery-settings-preview" class="name">游客预览数</label>
<input type="text" id="gallery-settings-preview" name="preview" data-setting="preview" style="float: left;width: 100px...
WordPress教程:最近模板兔给客户定制了一款wordpress任务威客类的插件,用户可发布任务以及投标。其中涉及到自定义文章类型、自定义分类法,在后台需要对任务进行类别筛选,可用以下代码:
add_action( 'restrict_manage_posts', 'erphp_task_filter_by_taxonomies' , 10, 2);
function erphp_task_filter_by_taxonomies( $post_type, $which ) {
if ( 'task' !== $post_type )
return;
$taxonomies = array( 'tasks' );//这里可以加多个自定义分类法
foreach ( $taxonomies as $taxonomy_slug ) {
$taxonomy_obj = get_taxonomy( $taxonomy_slug );
$taxonomy_name = $taxonomy_obj->labels->name;
$terms = get_terms( $taxonomy_slug );
...