最近工作上需要用到wordpress,就学习了一些基本的内容~在此记录一下~
1. 获取当前页面所属分类的名称
<?php
$category = get_the_category();
echo $category[0]->cat_name;
?>
2. 获取文章摘要函数
- 使用wordpress默认的函数
<p><?php the_excerpt(); ?></p>
用这个函数时,有手动输入摘要,就会获取手动输入的摘要,不限字数,没有的话,就自动截取文章的前面的字作为摘要,一般限定55个单词
-
注意: 在php中是用空格来截取字数的,可是在中文中是相连的,没有空格的,这样用
the_excerpt()
的时候,截取出来的结果是全文。
这种情况,可以用php的ms_substr
去解决在Wordpress中可以打开主题中的funtions.php,加入下面的代码:
function chinese_excerpt($text, $lenth=100) {
$text = mb_substr($text,0, $lenth);
return $text;
}
add_filter('the_excerpt', ' chinese_excerpt ');
上面的代码中的$lenth=100设定为任意的截取长度。
- 或者直接使用中文截取法,加入如下代码:
function custom_excerpt_length( $length ) {
return 200;
}
add_filter( 'excerpt_length', 'custom_excerpt_length', 999 );
200为字数,可以修改为自己的值。
- 还有一个办法,就是运用css限制高度,然后运用多行省略的方式在文章的最后加上“...”,通过这种方式来模拟摘要。
3.获取当前文章的链接
<?php
echo get_permalink();
?>
4.筛选文章,拿到特定的文章内容
query_posts()
函数可以决定哪些文章出现在WordPress主循环(loop)中,也就是根据你设置的参数,来决定显示在页面上的文章。
<?php
$postType = get_category_by_slug('successfulcase')->term_id;
$paramArray = array(
'post_type' => array('post'),
'cat' => $postType,
);
query_posts($paramArray);
?>
函数的用法如上,具体还有很多其他的过滤参数,点击这里可以查看详细的函数说明
5.获取当前文章的自定义栏目
背景说明:需要在文章下面呈现相似的文章,而我是通过给每篇文章设置自定义标签的方式来将它们归类的,所以需要知道当前文章的自定义标签是什么,然后再找出这个标签下面的其他文章。
获取指定日志或者页面的所有自定义字段的 key,由于我每篇文章只设置了一个自定义标签,所以可以通过这个方式来获得当前文章的自定义标签名
<?php get_post_custom_keys($post_id); ?>
参数说明:
$post_id (integer) (optional) 要获取所有自定义字段 key 的日志 ID。 Default: 当前日志
这样就可以获取当前文章下所有自定义字段的key,可是有个问题, 除了自己设置的字段外,WordPress 内部使用的默认 key 值也会被获取到,比如:_edit_last 和 _edit_lock。这些默认字段会扰乱接下来的判断,所以要去掉这些字段:
- 方法一:
<?php
$custom_field_keys = get_post_custom_keys();
foreach ( $custom_field_keys as $key => $value ) {
$valuet = trim($value);
if ( '_' == $valuet{0} )
continue;
echo $key . " => " . $value . "<br />";
}
?>
- 方法二:
也可以自己输出下,看看wordpress内部用了什么字段,如果少的话,可以循环数组,逐个判断,去掉不需要的。
6.站内搜索
- 看看当前主题的根目录下是否有
searchform.php
文件,如果没有,就新建一个,并添加下面这段代码:
<form method="get" id="searchform" action="<?php bloginfo('url'); ?>/">
<div>
<input type="text" value="<?php the_search_query(); ?>" name="s" id="s" />
<input type="submit" id="searchsubmit" value="<?php _e('搜索','Professional'); ?>" />
</div>
</form>
- 样式可以在对应的
css
文件里面自由调整 - 然后在需要出现搜索框的地方插入下面的代码即可
<?php
get_search_form();
?>
7.在主题模板中引用其他php文件的方法
wordpress中内置了一个调用函数,该函数可以直接引用模板根目录下的PHP文件,引用test.php
文件,如下面所示即可,不需要写后缀
<?php
get_template_part('test');
?>
8.缩略图的获取
<?php
<img src="<?php echo wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'thumbnail') ?>"/>
?>
其中参数thumbnail
是缩略图显示的尺寸,默认是这个,也可以设置自己想要的尺寸,例如在文件post_thumbnails_professional.php
中添加下面的代码:
add_image_size( 'pdf-thumb', 253, 353, true);
那么用的时候只需要改成这样即可:
<?php
<img src="<?php echo wp_get_attachment_image_src(get_post_thumbnail_id($post->ID), 'pdf-thumb') ?>"/>
?>
9.获取文章中第一张图片
在主题根目录中,找到functions.php文件,并添加以下代码:
function get_content_first_image($content){
if ($content === false) $content = get_the_content();
preg_match_all('|<img.*?src=[\'"](.*?)[\'"].*?>|i', $content, $images);
if ($images) {
return $images[1][0];
}
else {
return false;
}
}
然后使用下面的方式引用:
<img src="<?php echo get_content_first_image(get_the_content()); ?>" alt=""/>
逻辑:获取当前文章内容,然后用正则匹配第一个img里面的src。
点击查看参考网址
10.非分页实现数字分页
- 在主题根目录的function.php或者wp-includes里面的function.php写上下面的代码:
function par_pagenavi($range = 9) {
global $paged, $wp_query;
if (!$max_page) {
$max_page = $wp_query->max_num_pages;
}
if ($max_page > 1) {
if (!$paged) {
$paged = 1;
}
if ($paged != 1) {
echo "<a href='" . get_pagenum_link(1) . "' class='extend' title='跳转到首页'>首页</a>";
}
previous_posts_link(' 上一页 ');
if ($max_page > $range) {
if ($paged < $range) {
for ($i = 1; $i <= ($range + 1); $i++) {
echo "<a href='" . get_pagenum_link($i) . "'";
if ($i == $paged)
echo " class='current'";echo ">$i</a>";
}
}
elseif ($paged >= ($max_page - ceil(($range / 2)))) {
for ($i = $max_page - $range; $i <= $max_page; $i++) {
echo "<a href='" . get_pagenum_link($i) . "'";
if ($i == $paged)
echo " class='current'";echo ">$i</a>";
}
}
elseif ($paged >= $range && $paged < ($max_page - ceil(($range / 2)))) {
for ($i = ($paged - ceil($range / 2)); $i <= ($paged + ceil(($range / 2))); $i++) {
echo "<a href='" . get_pagenum_link($i) . "'";
if ($i == $paged)
echo " class='current'";echo ">$i</a>";
}
}
}
else {
for ($i = 1; $i <= $max_page; $i++) {
echo "<a href='" . get_pagenum_link($i) . "'";
if ($i == $paged)
echo " class='current'";echo ">$i</a>";
}
}
next_posts_link(' 下一页 ');
if ($paged != $max_page) {
echo "<a href='" . get_pagenum_link($max_page) . "' class='extend' title='跳转到最后一页'> 最后一页 </a>";
}
}
}
- 接下来用下面的代码替换原来模板中默认翻页代码或者分页插件代码:
<?php par_pagenavi(6); ?>
11.限制上传文件大小
- 方法一:在functions.php中添加如下代码,这样上传限制就是64M
@ini_set('upload_max_size', '64M');
@ini_set('post_max_size', '64M');
@ini_set('max_execution_time', '300');
- 方法二:新建一个php.ini文件,在你的主机空间的根目录新建一个php.ini文件,添加如下代码:
upload_max_filesize = 64M;
post_max_size = 64M;
max_execution_time = 300;
- 方法三:使用.htaccess文件,在这个文件中添加如下代码:
php_value upload_max_filesize 64M
php_value post_max_size 64M
php_value max_execution_time 300
php_value max_input_time 300