盘点2022年最有价值的6个WordPress Banner 插件 (更新中)

Banner图还在用PS设计吗?下面这几个WordPress 插件就可以轻松地将高转换Banner图添加到WordPress网站。然后,您可以使用它们来推广您的产品、突出显示您的服务、销售广告等。

在本文中,我们将比较最好的WordPress横幅插件,以帮助您提高网站收入。

1. OptinMonster

OptinMonster

OptinMonster是WordPress最好的潜在客户开发工具。我们在WP初学者上使用OptinMonster,仅此插件就将转换率提高了600%以上。

专业提示:有一个免费版本的OptinMonster,您可以使用它开始使用。他们有一个特殊的免费计划,只能从WordPress插件商城中找到。

OptinMonster允许您向网站添加各种横幅,包括下图所示的浮动横幅栏。

Floating header bar example from MonsterInsights

 

发表在 WordPress教程 | 盘点2022年最有价值的6个WordPress Banner 插件 (更新中)已关闭评论

利用WordPress做好跨境电商站的seo优化

简介: 如何做好Wordpress seo优化,Wordpress seo优化其实并不难,难的是不知道怎么去做Wordpress seo优化,相信这个问题困扰者很多wordpress站长,今天我们详细的为大家讲解一下Wordpress seo优化到底该怎么做

如何做好WordPress seo优化,Wordpress seo优化其实并不难,难的是不知道怎么去做Wordpress seo优化,相信这个问题困扰者很多wordpress站长,今天我们详细的为大家讲解一下Wordpress seo优化到底该怎么做,具体罗列了以下几点:


  1. 首页的优化,这个估计大家都会,关键字加描述,最简单的一种
  2. 日志的优化,这个也不难,添加 TAG标签一般就可以了,但是如何将seo做的更好,这就需要主题来配合了,首先,需要主题可以自动提取 TAG标签作为关键字,然后可以自动提取描述文字,这两点非常重要。
  3. 页面的优化,这个估计做到的人不多,因为独立页面没有可以输入标签的地方,那么怎么办呢,这就需要我们的主题里有这个设置项才能做到输入标签和描述,让搜索引擎更顺利的提取内容,从而提升排名。
  4. 分类列表的优化,分类都有个描述,这个地方可以好好利用的,但是大部分主题不支持,所以大家都不在意,我们设计的Jintu seo主题已经支持提取分类描述的功能,使用一款好的主题就等于比别人多做了很多事,你的排名不想靠前都难。
  5. 标签的优化,给标签添加描述也是个不错的方法,不过我们并不提倡这么做,这样有可能导致标签的权重超过页面,这样优化的效果大部分站长都不希望看到,当然这个也得靠主题配合才能完成优化的效果。
  6. 评论的优化,这点很久之前就已经说过了,将评论链接加上“nofollow”就可以了。
  7. H1~H6标记的使用,这个不只是针对文章,任何页面都需要注意。
  8. 外链的养殖,这个大家都会的,就不多说了,如果是企业的话,建议购买写高质量的外链。

要想把SEO做到终极优化,需要细心,耐心,恒心,另外还需要用心,当然光是做这些还不够,你还需要一款SEO主题模板,这样就等于如虎添翼,事半功倍,这里我们推荐一下本站设计的一款超级seo主题 Jintu,需要的站长和博主可以去看看,无论你是做博客,还是做资讯站,还是做产品推广,你都能用上这款主题。

发表在 WordPress教程, 跨境电商运营 | 利用WordPress做好跨境电商站的seo优化已关闭评论

WordPress wp_update_comment()函数

这个函数不是很懂,在这里记录一下,希望对大家也有帮助。

说明

更新数据库中已有的评论。
过滤评论并确保更新前特定字段处于可用状态。
定义在: wp-includes/comment.php

用法

1
<?php wp_update_comment( $commentarr ) ?>

参数

$commentarr(数组)(必需)包含关于评论的信息
默认值:None

返回的值(整数)值为1表示评论被更新,值为0时便是评论未被更新

示例

审核不通过评论:

1
2
3
4
5
6
<?php
$commentarr = array();
$commentarr['comment_ID'] = 123; // 唯一必须的数组键值
$commentarr['comment_approved'] = 0;
wp_update_comment( $commentarr );
?>

小结

在使用评论编辑功能的时候会用到

发表在 WordPress教程 | 标签为 | WordPress wp_update_comment()函数已关闭评论

wordrpess中wpautop函数的使用及禁用

今天在使用短代码的时候老是遇到一个问题:就是 WordPress 会自动在 shortcode 内添加 br 或者 p 标签,这样打乱了原先预想的 HTML 结构和布局。造成这个问题的原因是 WordPress 默认的日志内容处理流程中,wpautop(将回车转换成 p 或者 br 标签的函数)是在 Shortcode 前面运行的。先来简单介绍下wpautop函数,然后讲解如何解决这个问题。

wpautop函数简介

将文本中的两个换行符转换成 HTML 段落 (< p>…< /p>),其余的换行转换成 < br />

WordPress 使用这个函数对日志内容和摘要进行格式化处理。

 wpautop函数用法

1
<?php wpautop( $foo, $br ); ?>

$foo
(string) (required) 将格式化的文本。
Default: 无
$br
(boolean or integer) (optional) 保留换行符,当设置为 true ,段落转换完成之后余下的换行符将转换成 <br />
HTML 标签,script 和 style 后面的换行符不受影响。
Default: 1

wpautop函数实例

1
2
3
4
5
6
7
8
9
10
<?php
$some_long_text = <<<TXT
Some long text
that has many lines
 
and paragraphs in it.
TXT;
 
echo wpautop($some_long_text);
?>

输出结果

1
2
3
<p>Some long text<br/>
that has many lines</p>
<p>and paragraphs in it.</p>

wpautop函数的禁用与调整

为了解决shortcode的问题,我们可以调整wpsutop函数的执行顺序,在在当前主题的 functions.php 文件中添加:

1
2
remove_filter( 'the_content', 'wpautop' );
add_filter( 'the_content', 'wpautop' , 12);

这样调整顺序之后, shortcode 里面的内容,就不会有自动添加的 p 或者 br 标签,但是如果 shortcode 中部分的内容又需要一些 p 或者 br 标签用来换行的话,可以自己在 shortcode 处理程序中添加 wpautop 来处理了。

1
2
3
4
5
function bio_shortcode($atts, $content = null) {
   $content = wpautop(trim($content));
   return '<div class="bio">' . $content . '</div>';
}
add_shortcode('bio', 'bio_shortcode');

小结

以上内容参考了我爱水煮鱼的文章,针对自己遇到的问题进行了解决,后面还会讲解shortcode的使用。

发表在 WordPress教程 | 标签为 | wordrpess中wpautop函数的使用及禁用已关闭评论

add_action()使用与解析

常用函数-add_action()

说明

将函数连接到指定action(动作)。

在Plugin API/Action Reference 上查看动作hook列表。wordpress核心调用do_action() 时触发动作。

用法

<?php add_action($tag, $function_to_add, $priority = 10, $accepted_args = 1); ?>

示例

博客发表新内容时用电子邮件通知朋友:

1
2
3
4
5
6
7
function email_friends($post_ID)  {     
   $friends = 'bob@example.org, susie@example.org';     
   mail($friends, "sally's blog updated" , 'I just put something on my blog: 
http://blog.example.com');     
   return $post_ID;  
}    
add_action('publish_post', 'email_friends');

参数

$tag

(字符串)希望连接到的动作名称(在Plugin API/Action Reference 上查看动作hook列表)

$function_to_add

(回调)希望调用的函数名称。注意: the PHP documentation for the ‘callback’ type中解释的语法均可用。

$priority

函数的重要程度。改变此参数以决定函数与其他函数的调用顺序。默认值为10,因此(例如)将值设为5时函数运行较早,设为12时运行则较晚。

$accepted_args

函数所接受参数的数量。在WordPress 1.5.1及之后版本中,连接的函数可吸收其它在调用do_action() 或 apply_filters()时设置的参数。例如,comment_id_not_found动作将传递任何函数,若该函数将所请求的评论编号连接到该动作。

常用tag

把在Plugin API/Action Reference查到的常用tag贴一下:

前台:
muplugins_loaded
plugins_loaded
load_textdomain
set_current_user
init wp_loaded
parse_request
send_headers
parse_query
pre_get_posts
posts_selection
wp template_redirect
get_header
wp_head
wp_enqueue_scripts
wp_print_styles
wp_print_scripts
loop_start
the_post
loop_end
get_sidebar
dynamic_sidebar
wp_meta
get_footer
wp_footer
shutdown

后台:
muplugins_loaded
plugins_loaded
load_textdomain
auth_cookie_valid
set_current_user
init
wp_loaded
auth_redirect
admin_menu
admin_init
parse_request
send_headers
wp admin_head
adminmenu
admin_notices
admin_footer
shutdown

更多可到这里查看:http://adambrown.info/p/wp_hooks

发表在 WordPress教程 | 标签为 | add_action()使用与解析已关闭评论

WordPress wp_list_categories(分类列表)函数

最近帮别人做了一个主题,其中大量用到了wp_list_categories函数。所以说,别看它简单,用起来才发现其妙无穷。下面就介绍一下wp_list_categories函数的具体用法。

说明

将分类以列表的形式显示为链接。点击分类的链接,就可以访问该分类下的所有文章的存档页面。
注意: wp_list_categories() 和 list_cats() 以及 wp_list_cats() 的使用类似,但是后面 2 个已经弃用。
如果你希望不格式化输出分类,请使用 get_categories()

用法

1
<?php wp_list_categories( $args ); ?>

默认用法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php $args = array(
	'show_option_all'    => '',
	'orderby'            => 'name',
	'order'              => 'ASC',
	'style'              => 'list',
	'show_count'         => 0,
	'hide_empty'         => 1,
	'use_desc_for_title' => 1,
	'child_of'           => 0,
	'feed'               => '',
	'feed_type'          => '',
	'feed_image'         => '',
	'exclude'            => '',
	'exclude_tree'       => '',
	'include'            => '',
	'hierarchical'       => 1,
	'title_li'           => __( 'Categories' ),
	'show_option_none'   => __('No categories'),
	'number'             => null,
	'echo'               => 1,
	'depth'              => 0,
	'current_category'   => 0,
	'pad_counts'         => 0,
	'taxonomy'           => 'category',
	'walker'             => null
); ?>

参数

show_option_all
(字符串)非空值会导致如果样式设置为列表显示所有类别的链接。默认值是不显示链接到所有分类。

orderby 
(字符串)以分类名称、分类ID或文章数量等为排列依据。有效值:

  • ID
  • name – 默认
  • slug
  • count
  • term_group

order 
(字符串)分类的排序顺序(升序或降序)。缺省为升序。有效值:

  • ASC – 升序(默认)
  • DESC – 降序

style
(字符串)分类列表显示的样式。将分类列表的方式显示(使用<br >标签分隔列表项)。默认设置为列表(无序列表)。有效值:

  • list – 默认
  • none

show_count
(布尔)显示文章数量。默认情况下不显示文章数量。有效值:

  • 1 (True)
  • 0 (False) – 默认

hide_empty
(布尔)隐藏没有文章的分类。  默认情况下隐藏没有文章的分类。有效值:

  • 1 (True) – 默认
  • 0 (False)

use_desc_for_title
(布尔)是否将分类描述作为分类链接中的 title 属性,默认为 true。有效值:

  • 1 (True) – 默认
  • 0 (False)

child_of
(整数)只显示此参数确定的分类的子分类。此参数没有默认值。

feed 
(字符串)显示每个分类的 RSS-2 Feed链接到设置的feed文字。默认不显示feed文字和链接。

feed_type
(字符串)

feed_image
(字符串)设置一个图片到分类的 RSS-2 Feed链接。这个参数会覆盖上面的 feed 参数。此参数没有默认值。

exclude 
(字符串)排除一个或多个分类。使用逗号分隔每个分类的ID。参数 include 必须为空。

exclude_tree
(字符串)排除分类树。使用逗号分隔每个分类的ID。参数 include 必须为空。如果 hierarchical 参数 为 true ,请使用 exclude 参数替代 exclude_tree 。

include 
(字符串)只显示特定的分类,使用逗号分隔每个分类的ID。

hierarchical
(布尔)以层级来显示分类的子分类。默认为 true(在分类的下面显示它们的子分类)。有效值:

  • 1 (True) – 默认
  • 0 (False)

title_li
(字符串)设置列表的标题。默认为“Categories”。如果存在这个参数,但是值为空,将无法显示列表。

number
(整数)设置显示的分类数量。定义SQL的限制值。默认为不限制。

echo
(布尔) 显示结果或保存在一个变量里。默认为 True 。有效值:

  • 1 (True) – 默认
  • 0 (False)

depth 
(整数)显示分类的深度(即显示多少层的子分类)。默认值为 0(显示所有分类和子分类)。有效值:

  • 0 – 所有分类和子分类(默认)
  • -1 – 所有类别显示在平面(不缩进)的形式(覆盖hierarchical)。
  • 1 – 只显示顶级分类
  • n – 根据n的具体数字来显示对应等级的分类。

current_category
(整数)后跟分类ID号,对此ID分类加入名为current-cat的CSS控制,用户自定义current-cat样式后,可用于突出显示。

pad_counts
(布尔)计算包括子分类的链接或文章数。如果 show_counts 和 hierarchical 为  true ,这个参数就自动设置为  true 。有效值:

  • 1 (true)
  • 0 (false) – 默认

taxonomy 
(字符串)要返回的分类法。该参数是在 3.0 中添加的。有效值:

  • category – 默认
  • taxonomy – 或任何其他已注册的分类法

walker 
(对象)生成列表 Walker 类。有效值:
object – an instance of a class that extends either Walker_Category or Walker

示例

包含或排除分类
按字母顺序排序分类,只包括类别ID为 16,3,9和5 的分类,你可以使用下面的代码:

1
2
3
<ul>
<?php wp_list_categories('orderby=name&include=3,5,9,16'); ?> 
</ul>

根据名称排列,显示文章数,并且排除ID为 10 的分类:

1
2
3
<ul>
<?php wp_list_categories('orderby=name&show_count=1&exclude=10'); ?> 
</ul>

只显示指定分类的子分类
显示ID为 8 的分类的子分类,根据ID排序,显示文章数,并且将分类描述作为连接的 title属性。注意:如果父分类没有文章,将不显示父分类。

1
2
3
<ul> 
<?php wp_list_categories('orderby=id&show_count=1&use_desc_for_title=0&child_of=8'); ?>
</ul>
发表在 WordPress教程 | 标签为 | WordPress wp_list_categories(分类列表)函数已关闭评论

自己定义wordpress主循环

wordpress中可以自己定义输出文章,如按分类,日期等等,该操作一般都是在wordpress的主循环中完成。wordpress的主循环一般使用query_posts()函数,本文将对query_posts()函数做详细的介绍。

query_posts()函数说明

query_posts()函数通过大量的参数可以设置什么样的文章,内容出现在wordpress主循环中。如下面所举得例子:

  • 仅在博客主页上显示一篇文章(通过设置>阅读进行设置)
  • 显示某一特定时间段内发表的所有文章
  • 在主页显示近期发表文章
  • 更改文章排列顺序
  • 仅显示某一分类目录中的文章
  • 排除一个或多个分类

重要提示:
query_posts函数仅用于修改主页循环(Loop)。如果你希望在主循环外另外生成循环,应该新建独立的WP_Query对象,用这些对象生成循环。在主循环外的循环上使用query_posts会导致主循环运行偏差,并可能在页面上显示出你不希望看到的内容。query_posts函数会改写并取代页面的主查询。为谨慎起见,请不要将query_posts用作其它用途。

query_posts()函数用法

在主循环开始前,对你的某个模板文件的query_posts()安排一个调用,wp_query对象会利用参数生成新的SQL查询。当你开始调用时,WordPress主循环会忽略通过URL接收到的其它参数(如页面编号或分类),而根据query_posts()函数的查询结果进行循环输出。首先给出一个例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
//The Query 
query_posts(‘posts_per_page=5);
//The Loop 
if ( have_posts() ) : while ( have_posts() ) : the_post(); 
.. 
endwhile; else: 
.. 
endif;
 
//Reset Query 
wp_reset_query();
 
?>

如果你希望保留URL接收到的其它参数(如页面编号或分类),可以在对query_posts()的调用中使用$query_string全局变量。例如,要设置文章的显示顺序而不影响查询字符串的剩余部分,可以将以下代码添加到主循环(loop)之前:

1
2
global $query_string;  
query_posts($query_string . "&order=ASC");

以这种方式使用query_posts时,参数所引用的部分必须以&符号开头。这个在wordpress主题制作用有大量的应用。

query_posts()函数示例

1、博客主页排除分类

将以下代码添加到index.php文件中,使主页显示的文章可以来自除分类3以外的任何分类。

1
2
3
4
5
<?php
if (is_home()) {
query_posts("cat=-3");
}
?>

你也可以多排除几个分类:

1
2
3
4
5
<?php
if (is_home()) {
query_posts("cat=-1,-2,-3");
}
?>

2、检索指定文章或页面

1
2
3
4
<?php
// retrieve one post with an ID of 5
query_posts(‘p=5);
?>

如果你希望在查询语句中使用Read More功能,请将全局变量$more设为0。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<?php
// retrieve one post with an ID of 5
 
query_posts(‘p=5);
 
global $more;
 
// set $more to 0 in order to only get the first part of the post
 
$more = 0;
 
// the Loop
 
while (have_posts()) : the_post();
 
// the content of the post
 
the_content(‘Read the full post ?’);
 
endwhile;
 
?>

检索指定页面:

1
2
3
4
5
<?php
 
query_posts(‘page_id=7); //retrieves page 7 only
 
?>

或者

1
2
3
4
5
<?php
 
query_posts(‘pagename=about’); //retrieves the about page only
 
?>

检索子页面时,需要提供子页面及其父页面的别名,用斜线隔开两者。例如:

1
2
3
4
5
<?php
 
query_posts(‘pagename=parent/child’); // retrieve the child page of a parent
 
?>

3、query_posts传递变量

有两种方法可以给给查询传递变量,你可以根据自己的需求从中选择一种。使用时,将代码添加到循环中。
(1)在这个例子中,我们在运行查询语句前先连结所有查询。首先赋值变量,然后连结变量并运行。这里我们要从别处引入一个分类变量。

1
2
3
4
5
6
7
8
9
<?php
 
$categoryvariable=$cat; // assign the variable as current category
 
$query= ‘cat=. $categoryvariable.&orderby=date&order=ASC’; // concatenate the query
 
query_posts($query); // run the query
 
?>

(2)这个示例将使用双引号来告诉PHP将引号中的内容当成表达式。在下面的例子中,我们要获取当前月份、年份时间,然后让query_posts获取当前月/年的文章,并且以升序方式在页面最上方显示发表日期最早的文章。

1
2
3
4
5
6
7
8
9
10
11
<?php
 
$current_month = date(‘m’);
 
$current_year = date(‘Y’);
 
query_posts("cat=22&year=$current_year&monthnum=$current_month&order=ASC");
 
?>
 
<!– put your loop here –>

(3)该示例说明了怎样生成一个完整的文章分页列表。我们可以用默认的$query_string来命令query_posts给我们显示一个完整的文章列表。也可以将posts_per_page查询语句从-1改成你希望在每页显示的文章数。在后面这种情况下,你可以用posts_nav_link 来导航所生成的存档。

1
2
3
4
5
6
7
8
9
10
<?php
 
query_posts($query_string.&posts_per_page=-1);
 
while(have_posts()) { the_post();
 
<!– put your loop here –>
 
}
?>

(4)如果你不需要使用$query_string变量,可以在一些复杂的情况下使用一个更简单易读的方法。这个方法就是,将参数放入数组。那么通过下面的代码,也可以生成2中的查询:

1
2
3
4
5
6
7
8
9
10
11
query_posts(array(
 
‘cat’ => 22,
 
‘year’ => $current_year,
 
‘monthnum’ => $current_month,
 
‘order’ => ‘ASC’,
 
));

query_posts()函数参数

这里并没有列出完整的参数列表。我们在这里介绍这些参数,只是为了让你多了解一些关于如何设置查询的信息。

1、分类参数

只显示特定分类下的文章。

  • cat —— 必须使用分类ID
  • category_name
  • category_and —— 必须使用分类ID
  • category_in —— 必须使用分类ID
  • category_not_in —— 必须使用分类ID

根据ID显示单个分类
只显示来自某一个分类目录ID(以及该分类目录下的子分类目录)的文章:

1
query_posts('cat=4');

根据分类名称显示单个分类
只显示来自某一个分类名称下的文章:

1
query_posts('category_name=Staff Home');

根据ID显示多个分类
显示来自若干指定分类目录ID下的文章:

1
query_posts('cat=2,6,17,38');

排除某一分类中的文章
显示除某一分类文章外的所有文章,被排除的分类ID以减号(’-’)作为前缀。

1
query_posts('cat=-3');

以上代码删除ID为3的分类中的文章。

处理多个分类
显示隶属于多个分类的文章。下面的代码可展示同时属于分类2和分类6的文章:

1
query_posts(array('category__and' => array(2,6)));

如果希望显示分类2或分类6中的文章,可以使用上面介绍的cat,也可以使用category_in函数 (注意这里不会显示分类下子分类中的文章) :

1
query_posts(array('category__in' => array(2,6)));

可以用下面这种方式排除多个分类中的文章:

1
query_posts(array('category__not_in' => array(2,6)));

2、标签参数

显示特定标签下的文章。

  • tag —— 必须使用标签ID
  • tag_id —— 必须使用标签ID
  • tag_and —— 必须使用标签ID
  • tag_in —— 必须使用标签ID
  • tag_not_in —— 必须使用标签ID
  • tag_slug_and ——必须使用标签ID
  • tag_slug_in ——必须使用标签ID

获取某一标签中的文章

1
query_posts('tag=cooking');

获取若干标签中任一标签中的文章

1
query_posts('tag=bread+baking+recipe');

多个标签
显示同时属于ID为37和47的标签下的文章:

1
query_posts(array('tag__and' => array(37,47));

若要显示ID为为37或47的标签下的文章,可以使用tag参数,也可以用tag_in:

1
query_posts(array('tag__in' => array(37,47));

显示的文章既不属于标签37,也不属于标签47:

1
query_posts(array('tag__not_in' => array(37,47));

tag_slug_in与tag_slug_and工作方式几乎一致,不同之处在于相匹配的别名不同。

3、作者参数

  • author=3
  • author=-3 ——排除ID为3的作者所发表的文章
  • author_name=Harriet

注意:author_name运行在user_nicename字段上,同时author运行在author id字段上。

显示ID为1的作者所发表的所有页面,以标题顺序排列页面,页面列表上方无置顶文章:

1
query_posts('caller_get_posts=1&author=1&post_type=page&post_status=publish&orderby=title&order=A

4、文章&页面参数

  • ‘p’ => 27 —— 通过文章ID显示该文章
  • ‘name’ => ‘about-my-life’ —— 对某篇文章的查询,查询中含有文章别名
  • ‘page_id’ => 7 —— 对ID为7的页面的查询
  • ‘pagename’ => ‘about’ —— 注意,这不是页面标题,而是页面路径
  • 用’posts_per_page’ => 1 – use ‘posts_per_page’ => 3 展示3篇文章。用’posts_per_page’ => -1展示所有文章
  • ‘showposts’ => 1 – use ‘showposts’ => 3 展示3篇文章。用’showposts’ => -1展示所有文章。已弃用。
  • ‘post__in’ => array(5,12,2,14,7) —— 指定希望检索的文章ID
  • ‘post__not_in’ => array(6,2,8) ——排除不希望检索的文章ID
  • ‘post_type’ => ‘page’ ——返回页面;默认值为post;可用值包括any, attachment, page, post或revision。any可检索到除修订版外的所有页面类型。
  • ‘post_status’ => ‘publish’ —— 返回已发布页面。可用值还包括pending, draft, future, private, trash。关于inherit请见get_children。trash状态新增于WordPress 2.9。
  • ‘post_parent’ => 93 —— 返回页面93的子页面。

5、置顶文章参数

置顶文章功能引入于WordPress 2.7。在查询中,被设为“置顶”的文章会显示在其它文章之前,除非该文章已经被caller_get_posts=1参数排除。

  • array(‘post__in’=>get_option(‘sticky_posts’)) —— 返回所有置顶文章的数组
  • caller_get_posts=1 —— 排除返回的文章上方的置顶文章,但在返回文章列表时,以自然顺序将曾经置顶的文章安插在列表中。

返回第一篇置顶文章

1
2
$sticky=get_option(‘sticky_posts’) ;
query_posts(‘p=. $sticky[0]);

1
2
3
4
5
6
$args = array(
‘posts_per_page’ => 1,
‘post__in’ => get_option(‘sticky_posts’),
‘caller_get_posts’ => 1
);
query_posts($args);

注意:第二种方法只能返回最新发表的置顶文章;若当前无置顶文章,返回最新发表文章。

返回第一篇置顶文章;若无,则不返回任何内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
$sticky = get_option(‘sticky_posts’);
 
$args = array(
 
‘posts_per_page’ => 1,
 
‘post__in’ => $sticky,
 
‘caller_get_posts’ => 1
 
);
 
query_posts($args);
 
if($sticky[0]) {
 
// insert here your stuff…
 
}

从查询中排除所有置顶文章

1
query_posts(array("post__not_in" =>get_option("sticky_posts")));

返回某一分类下所有文章,但不在文章列表上方显示置顶文章。所有设为“置顶”的文章以正常顺序(如日期顺序)显示

1
query_posts('caller_get_posts=1&posts_per_page=3&cat=6');

返回某一分类下所有文章,完全不显示置顶文章,保留分页

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
 
$paged = (get_query_var(‘paged’)) ? get_query_var(‘paged’) : 1;
 
$sticky=get_option(‘sticky_posts’);
 
$args=array(
 
‘cat’=>3,
 
‘caller_get_posts’=>1,
 
‘post__not_in’ => $sticky,
 
‘paged’=>$paged,
 
);
 
query_posts($args);
 
?>

6、时间参数

检索特定时间段内发表的文章。

  • hour= -hour (时,-范围从0到23)
  • minute= – minute (分,-范围从0到60)
  • second= – second (秒,-范围从0到60)
  • day= – day of the month (日,-范围从1到31)
  • monthnum= – month number (月,-范围从1到12)
  • year= – 4 digit year (年,如2009)
  • w= – week of the year(一年中的第几周,-范围从0到53),使用 MySQL WEEK command Mode=1命令

返回最近发表的文章

1
2
$today = getdate();  
query_posts('year=' .$today["year"] .'&monthnum=' .$today["mon"] .'&day=' .$today["mday"] );

返回12月20日发表的文章

1
query_posts(monthnum=12&day=20' );

返回2009年3月1日到3月15日之间发表的文章

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<?php
//based on Austin Matzko’s code from wp-hackers email list
 
function filter_where($where =) {
 
//posts for March 1 to March 15, 2009
 
$where .= " AND post_date >= ’2009-03-01′ AND post_date < ’2009-03-16′";
 
return $where;
 
}
 
add_filter(‘posts_where’, ‘filter_where’);
 
query_posts($query_string);
 
?>

返回最近30天内发表的文章

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
//based on Austin Matzko’s code from wp-hackers email list
 
function filter_where($where =) {
 
//posts in the last 30 days
 
$where .= " AND post_date > ‘" . date(‘Y-m-d’, strtotime(-30 days’)) . "’";
 
return $where;
 
}
 
add_filter(‘posts_where’, ‘filter_where’);
 
query_posts($query_string);
 
?>

返回过去30天到过去60天内发表的文章

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
 
//based on Austin Matzko’s code from wp-hackers email list
 
function filter_where($where =) {
 
//posts 30 to 60 days old
 
$where .= " AND post_date >= ‘" . date(‘Y-m-d’, strtotime(-60 days’)) . "’" . " AND post_date <= ‘" . date(‘Y-m-d’, strtotime(-30 days’)) . "’";
 
return $where;
 
}
 
add_filter(‘posts_where’, ‘filter_where’);
 
query_posts($query_string);
 
?>

7、分页参数

  • paged=2 ——显示点击“较早的日志”链接后出现在第二页中的文章
  • posts_per_page=10 —— 每页所显示的文章数量;若值为-1,显示所有文章。
  • order=ASC —— 按时间顺序显示文章,若值为DESC则按逆向时间顺序显示文章(默认)

8、offset(偏移)参数

通过offset参数,你可以移除或忽略正常情况下被查询集中的一篇或多篇初始文章。
以下显示最近一篇文章之后的5篇文章:
query_posts(‘posts_per_page=5&offset=1′);

9、排序参数

  • orderby=author
  • orderby=date
  • orderby=category ——注意:该参数不能用于WordPress 2.8,可能已经被废止
  • orderby=title
  • orderby=modified
  • orderby=menu_order
  • orderby=parent
  • orderby=ID
  • orderby=rand
  • orderby=meta_value —— meta_key=some value语句也应出现在查询参数中
  • orderby=none – no order —— (新增于 WP 2.8)
  • orderby=comment_count ——(新增于 WP 2.9)

10、顺序参数

决定以升序或降序排列排序参数

  • order=ASC —— 升序,从最低值到最高值
  • order=DESC —— 降序,从最高值到最低值

11、自定义字段参数

根据自定义关键字或值检索文章(或页面)。

  • meta_key=
  • meta_value=
  • meta_compare= —— 用以测试meta_value=的操作符,默认值为 ‘=’,其它可能的值包括’!=’、 ‘>’、’>=’、 ‘<’或 ‘<=’ 。

返回关键字为 ‘color’ 且值为’blue’的文章

1
query_posts('meta_key=color&meta_value=blue');

返回自定义字段关键字为’color’的文章,无论自定义字段值为何

1
query_posts('meta_key=color');

返回自定义字段值为’color’的文章,无论关键字为何

1
query_posts('meta_value=color');

返回自定义字段值为’green’的页面,无论自定义字段关键字为何

1
query_posts('post_type=page&meta_value=green');

返回自定义关键字为’color’、自定义字段值不为’blue’的文章和页面

1
query_posts('post_type=any&meta_key=color&meta_compare=!=&meta_value=blue');

返回自定义字段关键字为’miles’、自定义字段值小于等于22的文章。注意,字段值99会被看做大于字段值100,因为数据是以字符串形式而不是数字形式存储的。

1
query_posts('meta_key=miles&meta_compare=<=&meta_value=22');

12、联合参数

你可能已经从上面有些例子中看出来了,可以用&符号连接不同参数,如:

1
query_posts('cat=3&year=2004');

显示主页上、当前月份发表的、隶属于分类13下的文章:

1
2
3
4
5
if (is_home()) {
 
query_posts($query_string .&cat=13&monthnum=. date(‘n’,current_time(‘timestamp’)));
 
}

在WP 2.3中,以下参数联合会返回同时属于分类1和分类3的两篇文章,以文章标题降序排列:

1
query_posts(array('category__and'=>array(1,3),'posts_per_page'=>2,'orderby'=>title,'order'=>DESC));

在WP 2.3和WP 2.5中,以下参数联合本应返回属于分类1且带有“apples”标签的文章:

1
query_posts('cat=1&tag=apples');

但由于一个bug,代码没能显示出正常结果。详情请见Ticket #5433。有一个解决办法:利用+号查找多个标签:

1
query_posts('cat=1&tag=apples+apples');

这就显示出我们希望显示的结果了。

发表在 WordPress教程 | 标签为 | 自己定义wordpress主循环已关闭评论

使用Poedit汉化wordpress主题插件

以前不太知道wordpress汉化的过程,今天大概的了解了一下,在这里也跟大家分享一下,其实就是使用Poedit软件,非常的容易。

wordpress汉化的必要条件

使用_e 和 __输出待翻译文本

wordpress汉化遵循 GNU gettext 机制,WordPress 有两个可以被调用的函数:_e 和 __。为了使得插件或者主题能够被翻译,每次输出文本的时候,都应该使用这两个函数。

这两个函数的使用方法是:

1
2
__($message, $domain)
_e($message, $domain)

_e 和 __的区别是:

_e 直接输出文本,而 __ 是返回文本,需要自己输出,所以 __ 一般用在字符串连接当中。

这两个函数都用 $message 作为第一个参数和 $domain 作为第二个参数。第一个参数就是要输出的文本,而第二个参数 $domain是必选的。
如:主题名字为tennfycms,这里 $domain 就是 tennfycms,$domain 一般是在 load_plugin_textdomain 函数中定义,下面有具体介绍。

使用Poedit汉化wordpress主题插件

这里以我的tennfycms主题为例,介绍下汉化的过程。

这里需要使用Poedit软件来进行汉化,Poedit下载地址:Poedit百度云下载

按以下步骤进行汉化:

1、打开Poedit – 文件 – 新建消息目录文档,填写以下基本信息:

1)翻译属性

Poedit1

2)源路径

Poedit2

3)源关键字

Poedit3

注意 __ 是两个半角下划线。

2、保存生成po文件

设置好后确定,会弹出保存窗口,命名为zh_CN.po,保存到主题目录下即可。保存成功会弹出以下窗口,说明Poedit已经探测到这么多要翻译的英文了,确定即可。

Poedit4

3、开始翻译

一旦所有需要翻译的文本都找到了,就该开始翻译主题了。

Poedit5

载入汉化生成po及mo文件

通过保存新文件,会自动生成一个可以让别人使用的 .po的文件,和一个可以被 WordPress 直接读取来本地化插件的 .mo 文件。
然后我们需要在wordpress functions.php文件中载入汉化生成的po及mo文件:

1
2
3
4
5
6
function theme_init(){
	load_theme_textdomain('tennfyCMS', get_template_directory() . '/languages');
}
add_action ('init', 'theme_init');
 
?>

如果我们在 wp-config.php 文件中设置了使用汉语,他们插件的选项和输出的文本将会使用汉化之后的文本。

参考文章:
使用 poEdit 汉化 WordPress 插件和主题
WordPress主题插件汉化教程

发表在 WordPress教程 | 标签为 | 使用Poedit汉化wordpress主题插件已关闭评论

wordpress短代码插入表格

以前介绍了短代码的使用方法和如何集成到wordpress后台html编辑器中,今天就介绍一个具体的应用,利用短代码插入表格到文章中。

在这之前有必要说一下,先要禁用wpautop函数,否则页面中的html标签将会干扰一下短代码的使用。具体可以参考我这篇文章:
wordrpess中wpautop函数的使用及禁用

表格插入php代码

老规矩,还是要在functions.php里写好短代码,下面给出表格插入的短代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//表格短代码
add_shortcode( 'table', 'table_shortcode_handler' );
function table_shortcode_handler( $atts, $content='' ) {
    extract( shortcode_atts( array(
        'border'        => '0.5',
        'cellpading'    => '0',
        'cellspacing'   => '0',
        'class'         => 'shorttable',
        'width'         => ''
    ), $atts ) );
 
    $output = '';
 
    $trs = explode("\r\n\r\n", $content);
    $i=1;
    foreach($trs as $tr){
        $tr = trim($tr);
 
        if($tr){
            $tds = explode("\r\n", $tr);
			if($i!=1)
			$output .= '<tr>';
			else
			$output .= '<tr class="head">';
 
            foreach($tds as $td){
                $td = trim($td);
                if($td){
                    $output .= '<td>'.$td.'</td>';
                }
            }
            $output .= '</tr>';
        }
		$i=$i+1;   
    }
 
    if($class){
        $class = ' class="'.$class.'"';
    }
 
    if($width){
        $width = ' width="'.$width.'"';
    }
 
    $output = '<table border="'.$border.'" cellpading="'.$cellpading.'" cellspacing="'.$cellspacing.'" '.$width.' '.$class.' >'.$output.'</table>';
 
    return $output;
}

大概的介绍下这段代码的意思:连续两个回车为一行(tr),一个回车为一个单元格(td),其中第一行为表头,单独定义了一个样式。

css样式化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
.shorttable {
         margin-bottom: 20px;
		 border: 1px solid #CCCCCC;
         margin-bottom: 15px;
}
.shorttable tr {
clear: both;
list-style: none outside none;
margin: 0;
padding: 0;
}
.shorttable tr.head td {
background: none repeat scroll 0 0 #F5F5F5;
border-bottom: 1px solid #CCCCCC;
color: #222222;
}
.shorttable tr td {
border-bottom: 1px dotted #CCCCCC;
border-right: 1px dotted #CCCCCC;
font-size: 12px;
line-height: 28px;
text-align: center;
}

使用方法

在html编辑模式下插入:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
[table width="95%"]
姓名
学号
年龄
性别
 
李明
1
20
男
 
李芳
2
21[/table]

效果如下:

姓名 学号 年龄 性别
李明 1 20
李芳 2 21

小结

php代码那部分参考了我爱水煮鱼的文章:http://blog.wpjam.com/m/wordpress-shortcode-for-table/,它的样式没有进行过优化,太难看了些。我针对表头单独定义了样式,美观些。

发表在 WordPress教程 | 标签为 | wordpress短代码插入表格已关闭评论

get_template_part()函数使用与解析

这两天修改了一个cms主题,自我感觉良好,中间用到了get_template_part()函数,查了些资料,记录一下。文章参考了http://pangbu.com/get_template_part/。

说明

加载一个制定的模板到另一个模板里面(不同于包含header,sidebar,footer).
使得一个主题使用子模板来实现代码段重用变得简单

用于在模板中包含指定的模板文件,只需用指定参数slug和name就可以包含文件{slug}-{name}.php,最重要的功能是如果没有这个文件就包含没有{name}的.php文件文件

用法

<?php get_template_part( $slug, $name ) ?>

参数

$slug (必须) 通用的模板名

$name (可选) 指定的模板名

示例

使用 loop.php 在子主题里面

假设主题文件夹wp-content/themes下父主题是twentyten子主题twentytenchild,那么下面的代码:

1
<?php get_template_part( 'loop', 'index' ); ?>

php 的require()函数将按下面优先级包含文件

1. wp-content/themes/twentytenchild/loop-index.php
2. wp-content/themes/twentytenchild/loop.php
3. wp-content/themes/twentyten/loop-index.php
4. wp-content/themes/twentyten/loop.php
再举一个例子:

1
2
3
4
5
6
7
8
<?php if ( have_posts() ) : ?>
	<?php twentyeleven_content_nav( 'nav-above' ); ?>
	<?php /* Start the Loop 在循环中使用以调用不同类型的文章 */ ?>
	<?php while ( have_posts() ) : the_post(); ?>
		<?php get_template_part( 'content', get_post_format() ); ?>
	<?php endwhile; ?>
............................
<?php endif; ?>

 小结

说实话,在我的主题里没用过这个函数,不喜欢太多的文件,太多的文件反而使简单的事情变得复杂。

发表在 WordPress教程 | 标签为 | get_template_part()函数使用与解析已关闭评论