wordpress二次开发 中对于functions.php的制作是非常多的,今天我们来分享关于wordpress二次开发技巧之functions.php的制作,希望大家可以喜欢!
下面根据需求,对各种能实现进行简单介绍。
先对functions.php文件进行介绍,通过代码实现各功能。
1. widgets sidebar 侧边栏小工具
wordpress二次开发技巧之functions.php篇
02
if
( function_exists(
'register_sidebar'
<span
class
=
"crayon-sy"
>) ) {
03
register_sidebar(
array
(
04
'name'
<span
class
=
"crayon-o"
>=>
'First_sidebar'
<span
class
=
"crayon-sy"
>,
05
'before_widget'
<span
class
=
"crayon-o"
>=>
''
<span
class
=
"crayon-sy"
>,
06
'after_widget'
<span
class
=
"crayon-o"
>=>
''
<span
class
=
"crayon-sy"
>,
07
'before_title'
<span
class
=
"crayon-o"
>=>
'<h4>'
<span
class
=
"crayon-sy"
>,
08
'after_title'
<span
class
=
"crayon-o"
>=>
'</h4>'
10
register_sidebar(
array
(
11
'name'
<span
class
=
"crayon-o"
>=>
'Second_sidebar'
<span
class
=
"crayon-sy"
>,
12
'before_widget'
<span
class
=
"crayon-o"
>=>
''
<span
class
=
"crayon-sy"
>,
13
'after_widget'
<span
class
=
"crayon-o"
>=>
''
<span
class
=
"crayon-sy"
>,
14
'before_title'
<span
class
=
"crayon-o"
>=>
'<h4>'
<span
class
=
"crayon-sy"
>,
15
'after_title'
<span
class
=
"crayon-o"
>=>
'</h4>'
17
register_sidebar(
array
(
18
'name'
<span
class
=
"crayon-o"
>=>
'Third_sidebar'
<span
class
=
"crayon-sy"
>,
19
'before_widget'
<span
class
=
"crayon-o"
>=>
''
<span
class
=
"crayon-sy"
>,
20
'after_widget'
<span
class
=
"crayon-o"
>=>
''
<span
class
=
"crayon-sy"
>,
21
'before_title'
<span
class
=
"crayon-o"
>=>
'<h4>'
<span
class
=
"crayon-sy"
>,
22
'after_title'
<span
class
=
"crayon-o"
>=>
'</h4>'
24
register_sidebar(
array
(
25
'name'
<span
class
=
"crayon-o"
>=>
'Fourth_sidebar'
<span
class
=
"crayon-sy"
>,
26
'before_widget'
<span
class
=
"crayon-o"
>=>
''
<span
class
=
"crayon-sy"
>,
27
'after_widget'
<span
class
=
"crayon-o"
>=>
''
<span
class
=
"crayon-sy"
>,
28
'before_title'
<span
class
=
"crayon-o"
>=>
'<h4>'
<span
class
=
"crayon-sy"
>,
29
'after_title'
<span
class
=
"crayon-o"
>=>
'</h4>'
33
register_nav_menus(
array
(
"primary"
=>
"Primary Navigation"
));
2. 后台支持自定义菜单
wordpress二次开发技巧之functions.php篇
02
if
(function_exists(
'register_nav_menus'
<span
class
=
"crayon-sy"
>)){
05
'header-menu'
<span
class
=
"crayon-o"
>=> __(
'导航自定义菜单'
<span
class
=
"crayon-sy"
>),
06
'footer-menu'
<span
class
=
"crayon-o"
>=> __(
'页角自定义菜单'
<span
class
=
"crayon-sy"
>),
07
'sider-menu'
<span
class
=
"crayon-o"
>=> __(
'侧边栏菜单'
<span
class
=
"crayon-sy"
>),
08
'primary'
<span
class
=
"crayon-o"
>=> __(
'Primary Navigation'
<span
class
=
"crayon-sy"
>,
'lee'
<span
class
=
"crayon-sy"
>),
输出菜单,在如header.php插入显示菜单的代码
1
<?php wp_nav_menu(
array
(
'container'
<span
class
=
"crayon-o"
>=>
''
<span
class
=
"crayon-sy"
>) ); ?>
3. 面包屑导航
02
function
wheatv_breadcrumbs() {
03
$delimiter
=
'<i>></i>'
<span
class
=
"crayon-sy"
>;
04
$name
=
'首页'
<span
class
=
"crayon-sy"
>;
05
$currentBefore
=
''
<span
class
=
"crayon-sy"
>;
06
$currentAfter
=
''
<span
class
=
"crayon-sy"
>;
08
if
( !is_home() && !is_front_page() || is_paged() ) {
10
echo
''
<span
class
=
"crayon-sy"
>;
13
$home
= get_option(
'home'
<span
class
=
"crayon-sy"
>);
14
echo
'<a href="'
<span
class
="crayon-sy
">.$home.'"
>'<span
class
=
"crayon-sy"
>.
$name
.
' </a>'
<span
class
=
"crayon-sy"
>.
$delimiter
.
' '
<span
class
=
"crayon-sy"
>;
16
if
( is_category() ) {
18
$cat_obj
=
$wp_query
->get_queried_object();
19
$thisCat
=
$cat_obj
->term_id;
20
$thisCat
= get_category(
$thisCat
);
21
$parentCat
= get_category(
$thisCat
->parent);
22
if
(
$thisCat
->parent != 0)
echo
(get_category_parents(
$parentCat
, TRUE,
' '
<span
class
=
"crayon-sy"
>.
$delimiter
.
' '
<span
class
=
"crayon-sy"
>));
23
echo
$currentBefore
.
''
<span
class
=
"crayon-sy"
>;
25
echo
''
<span
class
=
"crayon-sy"
>.
$currentAfter
;
27
}
elseif
( is_day() ) {
28
echo
''
<span
class
=
"crayon-sy"
>. get_the_time(
'Y'
<span
class
=
"crayon-sy"
>) .
' '
<span
class
=
"crayon-sy"
>.
$delimiter
.
' '
<span
class
=
"crayon-sy"
>;
29
echo
''
<span
class
=
"crayon-sy"
>. get_the_time(
'F'
<span
class
=
"crayon-sy"
>) .
' '
<span
class
=
"crayon-sy"
>.
$delimiter
.
' '
<span
class
=
"crayon-sy"
>;
30
echo
$currentBefore
. get_the_time(
'd'
<span
class
=
"crayon-sy"
>) .
$currentAfter
;
32
}
elseif
( is_month() ) {
33
echo
''
<span
class
=
"crayon-sy"
>. get_the_time(
'Y'
<span
class
=
"crayon-sy"
>) .
' '
<span
class
=
"crayon-sy"
>.
$delimiter
.
' '
<span
class
=
"crayon-sy"
>;
34
echo
$currentBefore
. get_the_time(
'F'
<span
class
=
"crayon-sy"
>) .
$currentAfter
;
36
}
elseif
( is_year() ) {
37
echo
$currentBefore
. get_the_time(
'Y'
<span
class
=
"crayon-sy"
>) .
$currentAfter
;
39
}
elseif
( is_single() ) {
40
$cat
= get_the_category();
$cat
=
$cat
[0];
41
echo
get_category_parents(
$cat
, TRUE,
' '
<span
class
=
"crayon-sy"
>.
$delimiter
.
' '
<span
class
=
"crayon-sy"
>);
46
}
elseif
( is_page() && !
$post
->post_parent ) {
51
}
elseif
( is_page() &&
$post
->post_parent ) {
52
$parent_id
=
$post
->post_parent;
53
$breadcrumbs
=
array
();
55
$page
= get_page(
$parent_id
);
56
$breadcrumbs
[] =
''
<span
class
=
"crayon-sy"
>. get_the_title(
$page
->ID) .
''
<span
class
=
"crayon-sy"
>;
57
$parent_id
=
$page
->post_parent;
59
$breadcrumbs
=
array_reverse
(
$breadcrumbs
);
60
foreach
(
$breadcrumbs
as
$crumb
)
echo
$crumb
.
' '
<span
class
=
"crayon-sy"
>.
$delimiter
.
' '
<span
class
=
"crayon-sy"
>;
65
}
elseif
( is_search() ) {
66
echo
$currentBefore
.
'搜索结果'
<span
class
=
"crayon-sy"
>. get_search_query() .
''
<span
class
=
"crayon-sy"
>.
$currentAfter
;
68
}
elseif
( is_tag() ) {
69
echo
$currentBefore
.
'搜索标签: '
<span
class
=
"crayon-sy"
>;
71
echo
''
<span
class
=
"crayon-sy"
>.
$currentAfter
;
73
}
elseif
( is_author() ) {
75
$userdata
= get_userdata(
$author
);
76
echo
$currentBefore
.
'Articles posted by '
<span
class
=
"crayon-sy"
>.
$userdata
->display_name .
$currentAfter
;
78
}
elseif
( is_404() ) {
79
echo
$currentBefore
.
'Error 404'
<span
class
=
"crayon-sy"
>.
$currentAfter
;
82
if
( get_query_var(
'paged'
<span
class
=
"crayon-sy"
>) ) {
83
if
( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() )
echo
' ('
<span
class
=
"crayon-sy"
>;
84
echo
__(
'第'
<span
class
=
"crayon-sy"
>) .
''
<span
class
=
"crayon-sy"
>. get_query_var(
'paged'
<span
class
=
"crayon-sy"
>) .
'页'
<span
class
=
"crayon-sy"
>;
85
if
( is_category() || is_day() || is_month() || is_year() || is_search() || is_tag() || is_author() )
echo
')'
<span
class
=
"crayon-sy"
>;
87
echo
''
<span
class
=
"crayon-sy"
>;
显示面包屑导航(category.php或single.php等)
1
<?php wheatv_breadcrumbs(); ?>
4. 文章访问量(点击数)
wordpress二次开发技巧之functions.php篇
02
function
getPostViews(
$postID
){
03
$count_key
=
'post_views_count'
<span
class
=
"crayon-sy"
>;
04
$count
= get_post_meta(
$postID
,
$count_key
, true);
05
if
(
$count
==
''
<span
class
=
"crayon-sy"
>){
06
delete_post_meta(
$postID
,
$count_key
);
07
add_post_meta(
$postID
,
$count_key
,
'0'
<span
class
=
"crayon-sy"
>);
12
function
setPostViews(
$postID
) {
13
$count_key
=
'post_views_count'
<span
class
=
"crayon-sy"
>;
14
$count
= get_post_meta(
$postID
,
$count_key
, true);
15
if
(
$count
==
''
<span
class
=
"crayon-sy"
>){
17
delete_post_meta(
$postID
,
$count_key
);
18
add_post_meta(
$postID
,
$count_key
,
'0'
<span
class
=
"crayon-sy"
>);
21
update_post_meta(
$postID
,
$count_key
,
$count
);
显示点击量(如category.php或single.php)
1
<?php
echo
getPostViews(get_the_ID()); ?>
5. 文章中所有链接新窗口中打开
2
function
autoblank(
$content
) {
3
$content
= preg_replace(
"/<a(.*?)>/"
,
"<a$1 target="
_blank
">"
,
$content
);
6
add_filter(
'the_content'
<span
class
=
"crayon-sy"
>,
'autoblank'
<span
class
=
"crayon-sy"
>);
6. 清除wp自带无用头部信息
03
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'feed_links'
<span
class
=
"crayon-sy"
>, 2 );
04
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'feed_links_extra'
<span
class
=
"crayon-sy"
>, 3 );
05
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'rsd_link'
<span
class
=
"crayon-sy"
>);
06
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'wlwmanifest_link'
<span
class
=
"crayon-sy"
>);
07
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'index_rel_link'
<span
class
=
"crayon-sy"
>);
08
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'parent_post_rel_link'
<span
class
=
"crayon-sy"
>, 10, 0 );
09
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'start_post_rel_link'
<span
class
=
"crayon-sy"
>, 10, 0 );
10
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'adjacent_posts_rel_link_wp_head'
<span
class
=
"crayon-sy"
>, 10, 0 );
12
remove_action(
'publish_future_post'
<span
class
=
"crayon-sy"
>,
'check_and_publish_future_post'
<span
class
=
"crayon-sy"
>, 10, 1 );
16
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'wp_generator'
<span
class
=
"crayon-sy"
>);
18
remove_action(
'wp_footer'
<span
class
=
"crayon-sy"
>,
'wp_print_footer_scripts'
<span
class
=
"crayon-sy"
>);
19
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
'wp_shortlink_wp_head'
<span
class
=
"crayon-sy"
>, 10, 0 );
20
remove_action(
'template_redirect'
<span
class
=
"crayon-sy"
>,
'wp_shortlink_header'
<span
class
=
"crayon-sy"
>, 11, 0 );
21
add_action(
'widgets_init'
<span
class
=
"crayon-sy"
>,
'my_remove_recent_comments_style'
<span
class
=
"crayon-sy"
>);
22
function
my_remove_recent_comments_style() {
23
global
$wp_widget_factory
;
24
remove_action(
'wp_head'
<span
class
=
"crayon-sy"
>,
array
(
$wp_widget_factory
->widgets[
'WP_Widget_Recent_Comments'
<span
class
=
"crayon-sy"
>],
'recent_comments_style'
<span
class
=
"crayon-sy"
>));
7. 自动保存和文章修订功能
wordpress二次开发技巧之functions.php篇
2
define(
'AUTOSAVE_INTERVAL'
<span
class
=
"crayon-sy"
>, 120 );
3
define(
'WP_POST_REVISIONS'
<span
class
=
"crayon-sy"
>, false);
8. 彩色静态标签云
wordpress二次开发技巧之functions.php篇
02
function
colorCloud(
$text
) {
03
$text
= preg_replace_callback(
'|<a (.+?)>|i'
<span
class
=
"crayon-sy"
>,
'colorCloudCallback'
<span
class
=
"crayon-sy"
>,
$text
);
06
function
colorCloudCallback(
$matches
) {
08
$color
=
dechex
(rand(0,16777215));
09
$pattern
=
'/style=('
|
")(.*)('|"
)/i'<span
class
=
"crayon-sy"
>;
10
$text
= preg_replace(
$pattern
,
"style="
color:#{
$color
};
$2
;
""
,
$text
);
13
add_filter(
'wp_tag_cloud'
<span
class
=
"crayon-sy"
>,
'colorCloud'
<span
class
=
"crayon-sy"
>, 1);
输出标签
1
<?php wp_tag_cloud(
'smallest=10&largest=14&number=32&order=RAND'
<span
class
=
"crayon-sy"
>) ?>
9. 搜索结果关键词高亮显示
具体实现,再另写文章介绍,后续可通过搜索找到。
wordpress二次开发技巧之functions.php篇
02
function
lee_set_query() {
03
$query
= attribute_escape(get_search_query());
04
if
(
strlen
(
$query
) > 0){
06
<script type=
"text/javascript"
>
07
var
lee_query =
"'.$query.'"
;
09
'<span
class
=
"crayon-sy"
>;
12
function
lee_init_jquery() {
13
wp_enqueue_script(
'jquery'
<span
class
=
"crayon-sy"
>);
15
add_action(
'init'
<span
class
=
"crayon-sy"
>,
'lee_init_jquery'
<span
class
=
"crayon-sy"
>);
16
add_action(
'wp_print_scripts'
<span
class
=
"crayon-sy"
>,
'lee_set_query'
<span
class
=
"crayon-sy"
>);
10. 自定义登录界面
在不更改html的情况下,可通过引入样式文件,自定义登录界面。
wordpress二次开发技巧之functions.php篇
02
function
custom_login(){
03
echo
'<link rel="stylesheet" type="text/css" href="'
<span
class
="crayon-sy
">. get_bloginfo('template_directory'<span class="
crayon-sy
">) . '/css/login.css"
/>'<span
class
=
"crayon-sy"
>;
05
add_action(
'login_head'
<span
class
=
"crayon-sy"
>,
'custom_login'
<span
class
=
"crayon-sy"
>);
07
function
login_headerurl(
$url
) {
08
return
get_bloginfo(
'url'
<span
class
=
"crayon-sy"
>);
10
add_filter(
'login_headerurl'
<span
class
=
"crayon-sy"
>,
'login_headerurl'
<span
class
=
"crayon-sy"
>);
12
function
login_headertitle(
$title
){
13
return
__(
'轩枫阁'
<span
class
=
"crayon-sy"
>);
15
add_filter(
'login_headertitle'
<span
class
=
"crayon-sy"
>,
'login_headertitle'
<span
class
=
"crayon-sy"
>);
11. 获得当前文章的位置
wordpress二次开发技巧之functions.php篇
wordpress二次开发技巧之functions.php篇
02
function
num_Pcurrent_post() {
04
$postid
= get_the_ID();
05
$getpost
= get_post(
$postid
);
06
$daysago
=
$getpost
->post_date;
07
$today
=
gmdate
(
'Y-m-d H:i:s'
<span
class
=
"crayon-sy"
>, time() + 3600 * 8);
08
$count_posts
= wp_count_posts();
09
$num_all_posts
=
$count_posts
->publish;
10
$result
=
$wpdb
->get_results(
"SELECT ID FROM $wpdb->posts WHERE post_date BETWEEN '$daysago' AND '$today' AND post_status='publish' AND post_type='post' ORDER BY post_date DESC "
);
11
foreach
(
$result
as
$Item
) {
12
$post_ID
[] =
$Item
->ID;
14
$num_current_post
=
count
(
$post_ID
)-1;
15
$output
.=
$num_current_post
.
'/'
<span
class
=
"crayon-sy"
>.
$num_all_posts
;
18
function
num_Ncurrent_post() {
20
$postid
= get_the_ID();
21
$getpost
= get_post(
$postid
);
22
$daysago
=
$getpost
->post_date;
23
$today
=
gmdate
(
'Y-m-d H:i:s'
<span
class
=
"crayon-sy"
>, time() + 3600 * 8);
24
$count_posts
= wp_count_posts();
25
$num_all_posts
=
$count_posts
->publish;
26
$result
=
$wpdb
->get_results(
"SELECT ID FROM $wpdb->posts WHERE post_date BETWEEN '$daysago' AND '$today' AND post_status='publish' AND post_type='post' ORDER BY post_date DESC "
);
27
foreach
(
$result
as
$Item
) {
28
$post_ID
[] =
$Item
->ID;
30
$num_current_post
=
count
(
$post_ID
)+1;
31
$output
.=
$num_current_post
.
'/'
<span
class
=
"crayon-sy"
>.
$num_all_posts
;
显示上下篇及位置,在single.php
1
<?php
if
(get_next_post()) {
echo
next_post_link(
'%link'
<span
class
=
"crayon-sy"
>,__(
'<span title="上一篇:%title">上一篇</span>'
<span
class
=
"crayon-sy"
>,
'lee'
<span
class
=
"crayon-sy"
>),
$in_same_cat
= false,
$excluded_categories
=
'11'
<span
class
=
"crayon-sy"
>); }
else
{
echo
'<a class="arc_nav_new">已最新</a>'
<span
class
=
"crayon-sy"
>; }?>
2
<?php num_Pcurrent_post(); ?>
4
<?php num_Ncurrent_post(); ?>
5
<?php
if
(get_previous_post()) {
echo
previous_post_link(
'%link'
<span
class
=
"crayon-sy"
>,__(
'<span title="下一篇:%title">下一篇</span>'
<span
class
=
"crayon-sy"
>,
'lee'
<span
class
=
"crayon-sy"
>),
$in_same_cat
= false,
$excluded_categories
=
'11'
<span
class
=
"crayon-sy"
>); }
else
{
echo
'<a class="arc_nav_new">已最后</a>'
<span
class
=
"crayon-sy"
>; }?>
12. 热门标签ajax加载
点击换一换
wordpress二次开发技巧之functions.php篇
03
if
( isset(
$_GET
[
'action'
<span
class
=
"crayon-sy"
>])){
04
if
(
$_GET
[
'action'
<span
class
=
"crayon-sy"
>] ==
'tag'
<span
class
=
"crayon-h"
> ){
05
echo
wp_tag_cloud(
'smallest=10&largest=14&number=32&order=RAND'
<span
class
=
"crayon-sy"
>);
11
add_action(
'init'
<span
class
=
"crayon-sy"
>,
'tagLoad'
<span
class
=
"crayon-sy"
>);
HTML部分
1
<a
class
=
"tag_change"
href=
"<?php echo get_option('home'<span class="
crayon-sy
">)."
/?action=tag
"; ?>"
>换一换</a>
使用JS实现点击交互
02
$(
".tag_change"
).click(
function
(){
04
url: $(this).attr(
"href"
),
05
type:
'get'
<span
class
=
"crayon-sy"
>,
06
beforeSend:
function
() {
09
error:
function
(error) {
12
success:
function
(data) {
14
$(
".tag_content"
).
empty
().append($(data).fadeIn(200));
13. 外链加上nofollow
防止引入的网站有问题,被降权
02
add_filter(
'the_content'
,
'cn_nf_url_parse'
);
03
function
cn_nf_url_parse(
$content
) {
05
$regexp
=
"<as[^>]*href=("
??)([^
" >]*?)1[^>]*>"
;
06
if
(preg_match_all(
"/$regexp/siU"
,
$content
,
$matches
, PREG_SET_ORDER)) {
07
if
( !
empty
(
$matches
) ) {
09
$srcUrl
= get_option(
'siteurl'
);
10
for
(
$i
=0;
$i
<
count
(
$matches
);
$i
++)
13
$tag
=
$matches
[
$i
][0];
14
$tag2
=
$matches
[
$i
][0];
15
$url
=
$matches
[
$i
][0];
19
$pattern
=
'/targets*=s*"s*_blanks*"/'
;
20
preg_match(
$pattern
,
$tag2
,
$match
, PREG_OFFSET_CAPTURE);
21
if
(
count
(
$match
) < 1 )
22
$noFollow
.=
' target="_blank" '
;
24
$pattern
=
'/rels*=s*"s*[n|d]ofollows*"/'
;
25
preg_match(
$pattern
,
$tag2
,
$match
, PREG_OFFSET_CAPTURE);
26
if
(
count
(
$match
) < 1 )
27
$noFollow
.=
' rel="nofollow" '
;
29
$pos
=
strpos
(
$url
,
$srcUrl
);
31
$tag
= rtrim (
$tag
,
'>'
);
32
$tag
.=
$noFollow
.
'>'
;
33
$content
=
str_replace
(
$tag2
,
$tag
,
$content
);
39
$content
=
str_replace
(
']]>'
,
']]>'
,
$content
);
14. 图片懒加载lazyload3. 外链加上nofollow
1
function
lazyload(
$content
) {
2
if
(!is_feed()||!is_robots) {
3
$content
=preg_replace(
'/<img(.+)src=['
"]([^'"
]+)['
"](.*)>/i',"
<img
$1data
-original=
"$2"
src=
"data:image/gif;base64,R0lGODlhAQABAIAAAOHh4QAAACH5BAAAAAAALAAAAAABAAEAQAICRAEAOw=="
$3
>n",
$content
);
7
add_filter (
'the_content'
,
'lazyload'
);
JS代码(需引入jquery.lazyload.js)
15. 获取文章中第一张图
如跑马灯图
wordpress二次开发技巧之functions.php篇
02
function
wpdx_postimage(
$atts
,
$content
= null) {
03
extract(shortcode_atts(
array
(
07
$images
=& get_children(
'post_type=attachment&post_mime_type=image&post_parent='
. get_the_id() );
08
foreach
(
$images
as
$imageID
=>
$imagePost
)
09
$fullimage
= wp_get_attachment_image(
$imageID
,
$size
, false);
10
$imagedata
= wp_get_attachment_image_src(
$imageID
,
$size
, false);
11
$width
= (
$imagedata
[1]+2);
12
$height
= (
$imagedata
[2]+2);
15
add_shortcode(
"postimage"
,
"wpdx_postimage"
);
显示图片
1
<a href=
"<?php the_permalink(); ?>"
target=
"_blank"
>
2
<?php
echo
do_shortcode(
"[postimage]"
); ?>
16. 截取摘要
wordpress二次开发技巧之functions.php篇
02
function
new_excerpt_length(
$length
) {
05
add_filter(
'excerpt_length'
,
'new_excerpt_length'
);
08
function
new_excerpt_more(
$more
) {
11
add_filter(
'excerpt_more'
,
'new_excerpt_more'
);
17. 获取文章第一个分类目录
因为一篇文章可能属于多个目录,有些地方只需要输出一个
2
function
get_first_category(){
3
$category
= get_the_category();
5
echo
'<a class="col_cat" href="'
.get_category_link(
$category
[0]->term_id ).
'">'
.
$category
[0]->cat_name.
'</a>'
;
8
add_filter(
'get_first_category'
,
'get_first_category'
);
HTML
1
<?php get_first_category(); ?>
18. 分类页获得文章简介
wordpress二次开发技巧之functions.php篇
2
function
get_category_expert(
$length
=240){
3
$content
= get_the_content();
4
$trimmed_content
= wp_trim_words(
$content
,
$length
,
'<a href="'
. get_permalink() .
'"> [...]</a>'
);
7
add_filter(
'get_category_expert'
,
'get_category_expert'
);
19. 根据页面类型指定每页显示的文章数
02
function
custom_posts_per_page(
$query
){
04
$query
->set(
'posts_per_page'
,9);
07
$query
->set(
'posts_per_page'
,5);
10
$query
->set(
'posts_per_page'
,-1);
13
$query
->set(
'posts_per_page'
,4);
16
$query
->set(
'posts_per_page'
,9);
19
$query
->set(
'posts_per_page'
,-1);
23
add_action(
'pre_get_posts'
,
'custom_posts_per_page'
);
20. 缩略图
02
if
( function_exists(
'add_theme_support'
) )add_theme_support(
'post-thumbnails'
);
08
function
dm_the_thumbnail() {
14
if
( has_post_thumbnail() ) {
16
echo
'<a class="at_feature" href="'
.get_permalink().
'" title="阅读全文">'
;
18
the_post_thumbnail(
'thumbnail'
);
24
$content
=
$post
->post_content;
26
preg_match_all(
'/<img.*?(?: |t|r|n)?src=['
"]?(.+?)['"
]?(?:(?: |t|r|n)+.*?)?>/sim',
$content
,
$strResult
, PREG_PATTERN_ORDER);
28
$n
=
count
(
$strResult
[1]);
32
$thumb_first
=
$strResult
[1][0];
33
$thumb_split
=
strrpos
(
$thumb_first
,
'.'
);
34
$thumb_before
=
substr
(
$thumb_first
, 0,
$thumb_split
);
35
$thumb_after
=
substr
(
$thumb_first
,
$thumb_split
,
strlen
(
$thumb_first
));
37
$thumb_before
= preg_replace(
$reg
,
""
,
$thumb_before
);
38
$thumb_src
=
$thumb_before
.
'-215x115'
.
$thumb_after
;
39
echo
'<a class="at_feature" href="'
.get_permalink().
'" title="阅读全文"><img class="animated" src="'
.
$thumb_src
.
'" alt="缩略图" /></a>'
;
42
$random
= mt_rand(0, 19);
43
echo
'<a class="at_feature" href="'
.get_permalink().
'" title="阅读全文"><img class="animated" src="'
.get_bloginfo(
'template_url'
).
'/images/thumbnail/default_thumbnail_'
.
$random
.
'.jpg" alt="缩略图" /></a>'
;
显示缩略图
2
<?php
if
(has_post_thumbnail()){ the_post_thumbnail();} ?>
6
<?php dm_the_thumbnail(); ?>
内容来源于网络如有侵权请私信删除