在WordPress这个强大的内容管理系统(CMS)中,函数调用是开发者实现自定义功能、优化网站性能和提升用户体验的重要手段。本文将深入解析WordPress函数调用的原理、方法和实战技巧,帮助大家更好地掌握WordPress开发。
一、WordPress函数调用概述
WordPress函数调用是指通过调用WordPress内置函数或自定义函数来执行特定操作。这些函数涵盖了内容管理、模板渲染、插件开发等多个方面,是WordPress开发的基石。
二、WordPress内置函数
WordPress内置函数是WordPress框架提供的一套功能丰富的函数库,开发者可以方便地调用这些函数实现各种功能。以下是一些常见的WordPress内置函数:
函数名 | 功能描述 |
---|---|
the_title() | 输出当前页面的标题 |
the_content() | 输出当前页面的内容 |
get_the_permalink() | 获取当前页面的链接 |
wp_enqueue_style() | 注册CSS样式文件 |
wp_enqueue_script() | 注册JavaScript脚本文件 |
get_template_part() | 获取模板部分 |
is_singular() | 判断当前页面是否为单篇文章页面 |
get_the_post_thumbnail() | 获取文章缩略图 |
get_user_meta() | 获取用户元数据 |
三、自定义函数
除了使用内置函数外,开发者还可以根据需求自定义函数。自定义函数可以封装重复代码,提高代码复用性,降低维护成本。
以下是一个简单的自定义函数示例:
“`php
function custom_function() {
echo “
如何修改与制作wordpress的作者页面
一般情况下,多数主题下都有author.php这个文件,这既是作者展示页面。如果发现自己正在使用的主题中没有author.php这个文件的话,Wordpress会默认寻找 archives.php文件,如果连archives.php都不可用,Wordpress会接着寻找你的 index.php文件。
想要创建一个author.php文件的话,可以拷贝archives.php或者 single.php的内容。在这两个页面的基础上插入对应的wordpress作者页面调用函数,即可调用相应的作者信息。
常用的作者信息调用函数:
the_author显示文章的作者
the_author_description显示文章作者的描述(作者个人资料中的描述)
the_author_login显示文章作者的登录名
the_author_firstname显示文章作者的firstname(名)
the_author_lastname显示文章作者的lastname(姓)
the_author_nickname显示文章作者的昵称
the_author_ID显示文章作者的ID号
the_author_email显示文章作者的电子邮箱
the_author_url显示文章作者的网站地址
the_author_link显示一个以文章作者名为链接名,链接地址为文章作者的网址的链接。
the_author_icq显示文章作者的icq
the_author_aim显示文章作者的aim
the_author_yim显示文章作者的yim
the_author_msn(不推荐使用)显示文章作者的msn
the_author_posts显示文章作者已发表文章的篇数
the_author_posts_link显示一个链接到文章作者已发表文章列表的链接
list_authors(不推荐使用)显示blog所有作者和他们的相关信息。完整函数如下:
参数:
optioncount:是否显示各作者已发表文章的篇数,可选值为:TRUE和 FALSE(默认值)
exclude_admin:是否不列出管理员,可选值为:TRUE(默认值)和 FALSE
show_fullname:是否显示各作者的全名,可选值为:TRUE和 FALSE(默认值)
hide_empty:是否不显示发表文章数为0的作者,可选值为:TRUE(默认值)和 FALSE
feed:链接到各个作者发表文章的RSS供稿种子链接名,默认为空,不显示RSS供稿种子
feed_image:供稿种子的图片地址,如果提供此项,则覆盖上面的feed,默认为空
代表不显示各个作者的发布文章数,列出管理员,显示各作者的全名,显示发布文章数为0的作者和不显示RSS供稿种子。
wp_list_authors显示blog作者列表,如果作者发表过文章,则他的名字将链接到他发表的文章列表中。可定义是否显示其他信息。
参数:
optioncount:是否显示各个作者发表文章数,可选值:true和 false(默认值)
exclude_admin:是否不显示“admin”用户,可选值:true(默认值)和 false
show_fullname:是否显示各个作者的全名,如果不显示,将显示昵称。可选值:true和 false(默认值)
hide_empty:是否不显示发表文章数为0的作者,可选值:true(默认值)和 false
feed:链接到各个作者发表文章的RSS供稿种子链接名,默认为空,不显示RSS供稿种子
feed_image:供稿种子的图片地址,如果提供此项,则覆盖上面的feed,默认为空
增加用户信息字段:
为了更加简便与安全的增加信息字段,建议将自定义字段添加到“联系信息”中。“联系信息”的字段添加方式非常简单,打开wp-includes/user.php文件,约在1539行可以找到:$user_contactmethods= array代码,在大括号中修改或增加字段。
字段增加的格式为‘数据库字段名’=> __(‘标题说明文字’)修改后的完整代码演示:
function _wp_get_user_contactmethods($user= null){
$user_contactmethods= array();
if( get_site_option(‘initial_db_version’)< 23588){
$user_contactmethods= array(
‘aim’=> __(‘支付宝收款地址’),
‘addres’=> __(‘所在地’),
‘job’=> __(‘职业’),
‘qq’=> __(‘QQ’),
‘touxiang’=> __(‘头像url’)
);
}
return apply_filters(‘user_contactmethods’,$user_contactmethods,$user);
}
可以根据需要删除默认的字段,添加自己需要的字段,以达到增加用户选项的目的。
修改此项后,在用户后台的个人资料中也会自动出现对应的输入框,无需再修改其他程序文件。如果需要在作者页面的前端调用显示自定义字段则只需要使用“echo$curauth->xxx;”的PHP语句即可输出对应字段。
附上本文的作者页面范例:
安装author info插件。制作一个小插件,安装后可以直接实现上述代码所说的功能。
wordpress 怎样减少数据库读取量
#1,若您的WordPress版本为2.3及以前,可采用如下方法令系统自动缓存内部调用函数,而完全不用担心缓存对系统交互性的影响(如延迟等)。
Step1:在WordPress安装目录下的wp-content文件夹下创建名为cache的目录,属性设置为755,如下图:
Step2:打开WordPress安装根目录下的wp-config.php文件,在其尾端加入define('ENABLE_CACHE', true);,如下图:
保存后上传更新文件,刷新页面后,可发现新创建的cache文件夹中生成了如下文件:
缓存的是一些不需要经常修改的文件,如分类名称、存档日期等。该缓存方法名为object缓存,并不缓存网页,而传统的wp-cache调用是缓存网页的,会影响网页的交互实时性,使用户体验些许变差。
#2,若您的WordPress版本为2.5及以上版本,由于新版WP取消了object缓存功能可以使用将所有待查数据都存入数据库options表(一般的默认名称为wp_options)的方法,大幅度减少数据库查询次数。ThinkAgain的解释如下:
默认WP有10个数据表,wp_posts和comments主要存储文章内容和评论,
其它的几个包括term等存储了目录和标签等等。这里不细谈。wp_options用来存储Wordpress以及插件运行时所涉及的配置等。且WP会在
运行时自动读取该表的内容。换句话说,因为WP已经预读这部分内容,所以直接调用wp_options内的数据是不会产生数据库查询的。()
方法:假如要缓存的是分类名称调用表单,则写functions.php如下代码:
function cache_category(){
$cached= get_option('multicolor_cache_category');
if($cached){
echo$cached;
}else{
$cached= cache_collapsible_list_cats();
echo”Update cache”;
echo$cached;
}
}
add_action('publish_post','cache_collapsible_list_cats');
当然,这显得很复杂,不过ThinkAgain说,WP2.6也是可以使用object自动缓存功能的,请等待他更新的方法。
#3,由于WordPress的内部永久链接调用函数为了追求老版插件的最大兼容性所以较啰嗦,比较耗费查询次数,可在functions.php写入如下代码,大幅度减少查询次数(均适用)
function revised_permalink($post,$leavename=false){
$rewritecode= array(
'%year%',
'%monthnum%',
'%day%',
'%hour%',
'%minute%',
'%second%',
$leavename?'':'%postname%',
'%post_id%',
'%category%',
'%author%',
$leavename?'':'%pagename%',
);
if( empty($post->ID)) return FALSE;
if($post->post_type=='page')
return get_page_link($post->ID,$leavename);
elseif($post->post_type=='attachment')
return get_attachment_link($post->ID);
$permalink= get_option('permalink_structure');
if(''!=$permalink&&!in_array($post->post_status, array('draft','pending'))){
$unixtime= strtotime($post->post_date);
$category='';
if( strpos($permalink,'%category%')!== false){
$cats= get_the_category($post->ID);
if($cats)
usort($cats,'_usort_terms_by_ID');// order by ID
$category=$cats[0]->slug;
if($parent=$cats[0]->parent)
$category= get_category_parents($parent, FALSE,'/', TRUE).$category;
// show default category in permalinks, without
// having to assign it explicitly
if( empty($category)){
$default_category= get_category( get_option('default_category'));
$category= is_wp_error($default_category)?'':$default_category->slug;
}
}
$author='';
if( strpos($permalink,'%author%')!== false){
$authordata= get_userdata($post->post_author);
$author=$authordata->user_nicename;
}
$date= explode(“”,date('Y m d H i s',$unixtime));
$rewritereplace=
array(
$date[0],
$date[1],
$date[2],
$date[3],
$date[4],
$date[5],
$post->post_name,
$post->ID,
$category,
$author,
$post->post_name,
);
$permalink= get_option('home'). str_replace($rewritecode,$rewritereplace,$permalink);
$permalink= user_trailingslashit($permalink,'single');
return apply_filters('post_link',$permalink,$post);
} else{// if they're not using the fancy permalink option
$permalink= get_option('home').'/?p='.$post->ID;
return apply_filters('post_link',$permalink,$post);
}
}
点击下面的链接下载修改好的文件,请解压后上传或粘贴到您原来的文件中。此方法文章页查询次数至少可降低10。
注意:如果您原来的插件有诸如下面的代码,并且您的永久链接方式为postname而不是postid,请修改
$sql=”SELECT ID, post_title, comment_count,post_date, post_content FROM$tableposts WHERE post_status='publish'”;
为
$sql=”SELECT ID, post_name, post_title,
comment_count,post_date, post_content FROM$tableposts WHERE
post_status='publish'”;
至此您的数据库查询次数将减小为个位数,繁忙时访问速度提高较显著,速度应当与直接生成静态文件时的情况差距不大,但互动性丝毫不减。
wordpress怎么获取文章所属分类的名称
第一步:在制作设计 wordpress模板时,经常要用到调用 wordpress文章所属分类名称的需要,其实这是个很简单的问题,因为文章所属分类名称是有相应的 wordpress内置函数的,只要直接进行调用就可以了,代码如下:
第二步:这个函数调用的是 wordpress的分类与链接,在实际的应用中,可能需要单独调出 wordpress的分类,而不需要添加链接,哪么该如何只调出文章分类的名称呢,如果是在分类页面进行调用,则使用如下的代码即可:
第三步:但如果要在文章页面进行所属分类名称的调用,则需要使用下面的代码了:
第四步:有时候可能还希望调出分类别名的方法,代码如下: