适合初学者的 WordPress 条件标签和代码段
WordPress 的最佳功能之一可能是条件标签。它允许您告诉代码在特定情况下采取不同的行动。例如,您可以检查用户使用的是 Windows 还是 Mac,并根据系统显示不同的内容。如果搜索查询仅返回一个结果,您也可以重定向到帖子。你说出情况; 条件标签可以识别它们!
尽管它可以灵活地根据不同情况确定动作,但它也很容易学习,甚至网络上什至有教程和资源供您掌握。也就是说,在本文中,我们将详细介绍条件标签、它们的工作原理以及何时使用它们。
在本文的最后一节中,我们还将展示十个有用的片段,以帮助您充分利用条件标签,所以获取所有这些片段可以让您的 WordPress 网站更智能地应对独特的情况!
如果(语句)
使用 PHP if语句,您可以询问某事是真还是假,是1还是0。如果你的陈述为真,你的代码将被执行,如果它为假,什么也不会发生,这取决于你如何决定条件标签中的动作。看看这个例子,我相信你会明白我在说什么。
1个
2个
3个
4个
5个
6个
7
8个
9
|
<?php if (10 == 10): echo 'This is true, and will be shown.' ; endif ; if (10 == 15): echo 'This is false, and will not be shown.' ; endif ; ?> |
您还可以使用elseif
which 来添加另一条语句,else
如果您的第一条语句为假,则将执行该语句。
1个
2个
3个
4个
5个
6个
7
8个
9
|
<?php if (10 == 11): echo 'This is false, and will not be shown.' ; elseif (10 == 15): echo 'This is false, and will not be shown.' ; else : echo 'Since none of the above is true, this will be shown.' ; endif ; ?> |
这就是您现在需要了解的关于if语句的全部内容,让我们进入 WordPress 条件标签!但是,如果您想更深入地了解 PHP if 语句,请前往php.net以供参考。
条件标签如何工作?
当使用 WordPress 的本机功能is_home()
时,您只需询问 WordPress 用户当前是否在主页上。然后 WordPress 将回答 0 表示否,1 表示是。
1个
2个
3个
4个
5个
6个
7
|
<?php if ( is_home() ): echo 'User is on the homepage.' ; else : echo 'User is not on the homepage' ; endif ; ?> |
有关 WordPress 条件标签的完整列表,您可以访问他们的代码库。
组合语句
有些情况下您可能想要检查多个语句。这很容易通过使用AND
和来完成OR
。
1个
2个
3个
4个
5个
6个
7
8个
9
|
<?php if ( is_home() AND is_page( 5 ) ): echo 'User is on the homepage, and the home pages ID is 5' ; endif ; if ( is_home() OR is_page( 5 )): echo 'User is on the homepage or the page where the ID is 5' ; endif ; ?> |
何时使用条件标签?
当您想根据与您网站相关的问题的答案更改内容时,条件标签非常有用。用户是否登录?她使用的是 Internet Explorer 吗?有帖子可以显示吗?
要获得使用中的条件标签的示例,我们可以查看二十一世纪(WP 3.2 中的标准主题)index.php的第 20 行。
1个
2个
3个
4个
5个
|
<?php if ( have_posts() ) : ?> ... posts ... <?php else : ?> ... search field ... <?php endif ; ?> |
这将检查是否有任何帖子要显示,如果答案为否,则显示搜索字段。
下面是 WordPress 条件标签的另一个例子:
1个
2个
3个
|
if ( is_admin() ): # User is administator endif ; |
1个
2个
3个
|
if ( is_home() AND is_page( '1' ) ): # The user is at the home page and the home page is a page with the ID 1 endif ; |
1个
2个
3个
|
if ( is_single() OR is_page() ): # The user is reading a post or a page endif ; |
1个
2个
3个
|
if ( !is_home() AND is_page() ): # The user is on a page, but not the homepage endif ; |
10 个有用的条件标签
WordPress codex 页面中可用的条件标签非常限于 WordPress 的大部分内容,例如帖子、页面等。但是,如果您环顾网络,可以找到许多小而有用的语句。
检查用户是否登录
如果您的博客有用户注册,这将是一个方便的片段,因为它会检查您的用户是否已登录。
1个
2个
3个
4个
5个
|
if ( is_user_logged_in() ): echo 'Welcome, registered user!' ; else : echo 'Welcome, visitor!' ; endif ; |
如果注册打开/关闭则显示内容
如果您的站点具有用户注册功能,并且您想让访问者知道注册是开放还是关闭,那么这是一个很好的片段。
1个
2个
3个
4个
5个
|
<?php if ( get_option( 'users_can_register' ): echo 'Registrations are opened.' ; else : echo 'Registrations are closed.' ; endif ; |
检查用户使用的是 Mac 还是 PC
想要根据用户使用的操作系统提供特定内容?这是给你的片段。
1个
2个
3个
4个
5个
|
if ( stristr ( $_SERVER [ 'HTTP_USER_AGENT' ], "mac" ) ): echo 'Hello, I' m a Mac.'; else : echo 'And I' m a PC.'; endif ; |
为登录用户禁用 Google Analytics
如果您使用的是 Google Analytics,并且只想跟踪作者和作者以外的访问者,则可以使用此代码段来达到目的。请务必将UA-XXXXXXX-X 更改为您的 Google Analytics ID。
1个
2个
3个
4个
5个
6个
7
8个
9
10
11
12
13
14
15
16
17
18
19
20
21
|
<?php // function for inserting Google Analytics into the wp_head add_action( 'wp_footer' , 'ga' ); function ga() { if ( !is_user_logged_in() ): //If user is not logged in ?> <script type= "text/javascript" > var _gaq = _gaq || []; _gaq.push([ '_setAccount' , 'UA-XXXXXXX-X' ]); // insert your Google Analytics id here _gaq.push([ '_trackPageview' ]); _gaq.push([ '_trackPageLoadTime' ]); ( function () { var ga = document.createElement( 'script' ); ga.type = 'text/javascript' ; ga.async = true; ga.src = ( 'https:' == document.location.protocol ? 'https://ssl' : 'http://www' ) + '.google-analytics.com/ga.js' ; var s = document.getElementsByTagName( 'script' )[0]; s.parentNode.insertBefore(ga, s); })(); </script> <?php endif ; } ?> |
检查帖子是否为自定义帖子类型
使用下面的条件标签,您可以检查当前帖子是否属于特定的自定义帖子类型,例如books。
1个
2个
3个
|
<?php if ( is_singular( 'books' ) ): // This post is of the custom post type books. endif ; ?> |
如果搜索查询仅返回单个结果,则重定向到帖子
将此代码段添加到您的WordPress Themes的functions.php以重定向您的搜索以在 WordPress 仅返回单个搜索结果时自动发布。
1个
2个
3个
4个
5个
6个
7
8个
9
10
11
|
<?php add_action( 'template_redirect' , 'single_result' ); function single_result() { if (is_search()) { global $wp_query ; if ( $wp_query ->post_count == 1) { wp_redirect( get_permalink( $wp_query ->posts[ '0' ]->ID ) ); } } } ?> |
检查是否是最后一个帖子
如果您在帖子之间使用分隔符,您可能不想将其包含在页面的最后一篇帖子中。将下面的条件标签包含到您的循环中,您希望仅在最后一篇文章中显示某些内容。
1个
2个
3个
|
<?php if ( ( $wp_query ->current_post + 1) < ( $wp_query ->post_count) ) { ?> <div class = "separator" ></div> <?php } ?> |
检查当前用户是否可以…
有时您想知道用户的角色,例如您只想为作者显示某些链接(编辑等)。函数current_user_can()的工作方式与上面提到的类似,代码如下:
1个
2个
3个
4个
5个
6个
7
8个
9
10
11
|
<?php if ( current_user_can( 'editor' ) ): // true if user is an editor endif ; if ( !current_user_can( 'administrator' ) ): // true if user is not admin endif ; if ( current_user_can( 'edit_posts' ) ): // true if user can edit posts endif ; ?> |
为除管理员以外的所有人禁用 Tinymce HTML 编辑器
曾经想为除管理员以外的所有人禁用Tinymce HTML 编辑器吗?这是给你的片段。
1个
2个
3个
4个
5个
6个
7
8个
9
10
11
|
<?php add_filter( 'wp_default_editor' , create_function( '' , 'return "tinymce";' ) ); add_action( 'admin_head' , 'disable_html_editor_wps' ); function disable_html_editor_wps() { global $current_user ; get_currentuserinfo(); if ( $current_user ->user_level != 10) { echo <style type= "text/css" >#editor-toolbar #edButtonHTML, #quicktags {display: none;}</style>; } }s ?> |
检查用户是否来自 StumbleUpon
StumbleUpon 是一个很棒的社交媒体,它能够为您的网站吸引流量。这里有一个吸引 Stumbler 的技巧:使用下面的条件标签显示一条特殊消息来欢迎他们,检查用户是否来自 StumbleUpon。
1个
2个
3个
4个
5个
|
<?php if ( strpos ( $_SERVER [HTTP_REFERER], "stumbleupon.com" ) == true ): ?> <div class = "welcome-stumbleupon" > <p>Hello StumbleUpon user!</p> </div> <?php endif ; ?> |
最后的话
希望您发现 WordPress 条件标签和我一样令人印象深刻。它在开发模板时为我节省了大量时间,而不必提出我的陈述。
另外,请务必查看WordPress Codex,看看它还能做什么。编码愉快!