跳至正文

适合初学者的 WordPress 条件标签和代码段

适合初学者的 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;
?>

您还可以使用elseifwhich 来添加另一条语句,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 Themesfunctions.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,看看它还能做什么。编码愉快!

标签: