新金沙3777

【新金沙3777】定义新的自定义小说类型的质量,WordPress 条件判别标签

二月 11th, 2020  |  未分类

博客文章 页面 附件 修正 导航等

2. 自定义内容类型的标签与更新提示信息

/*
 * 自定义内容类型-电影
 */
function movietalk_custom_post_type_movie(){
  $labels = array(
    // 菜单页面显示的文字
    'name'    => '电影',
    'singular_name'=> '电影',
    'add_new' => '添加电影',
    'add_new_item'=> '添加电影资料',
    'edit_item' => '编辑电影资料',
    'new_item'  => '新电影',
    'all_items' => '所有电影',
    'view_item' => '查看电影',
    'search_items'  => '搜索电影',
    'not_found' => '没有找到电影资料',
    'not_found_in_trash'  => '回收站里没找到电影资料',
    'menu_name' => '电影',
    );
  $args = array(
    'public' => true,
    'labels' => $labels,
    );
  register_post_type('movie', $args);
  // 'movie':文章类型的名称
  // $args:自定义文章类型配置数组
}
add_action('init', 'movietalk_custom_post_type_movie');
// 将函数连接到指定action(动作)

判断子主题

  1. is_child_theme()

判断当前是否是一个正在使用的子主题。

function movie_director_meta_box { // 创建临时隐藏表单,为了安全 wp_nonce_field( 'movie_director_meta_box', 'movie_director_meta_box_nonce' ); // 获取之前存储的值 $value = get_post_meta( $post->ID, '_movie_director', true ); ?>   这样就可以在文章界面边栏显示出来刚刚创建的表单了:但是这时候,你的表单是没法用的,因为你提交文章之后并没有保存这个 Meta Box 的内容,下面是验证保存内容的代码:add_action( 'save_post', 'movie_director_save_meta_box' );function movie_director_save_meta_box{ // 安全检查 // 检查是否发送了一次性隐藏表单内容 if ( ! isset( $_POST['movie_director_meta_box_nonce'] ) ) { return; } // 判断隐藏表单的值与之前是否相同 if ( ! wp_verify_nonce( $_POST['movie_director_meta_box_nonce'], 'movie_director_meta_box' ) ) { return; } // 判断该用户是否有权限 if ( ! current_user_can( 'edit_post', $post_id ) ) { return; } // 判断 Meta Box 是否为空 if ( ! isset( $_POST['movie_director'] ) ) { return; } $movie_director = sanitize_text_field( $_POST['movie_director'] ); update_post_meta( $post_id, '_movie_director', $movie_director );}

1.自定义内容类型

  • 文章:posts
  • 页面:pages
    自定义文章类型帮助我们将不同类型的文章放在不同的容器中,它可以将我们的文章和其他的区别开。

register_post_type():注册内容类型,第一个参数是定义了自定义文章类型的名字;第二个是一个数组,定义新的自定义文章类型的属性。

判断是否有可用的自定义导航菜单

  1. has_nav_menu()

判断一个被注册过的自定义导航菜单是否被指定了一个菜单。

即添加了列导演字段,并从每篇文章中读取出来。这样我们的列表就变成了:

3. 图像字段

字段 》添加字段 》海报-poster-图像
返回值:图像ID
预览图大小:Poster
前端显示

// functions.php
add_image_size('poster', 128, 180, true);
// 添加一个叫poster的缩略图尺寸,按照宽度128像素,高度180像素并允许裁切,生成缩略图

// single-movie.php
<!-- 获取海报的ID -->
<?php $poster_id = get_field('poster'); ?>
<!-- 若附件是图像,函数尝试返回其缩略图或适当大小的图像 -->
<?php echo wp_get_attachment_image($poster_id, 'poster'); ?>

判断插件是否激活

  1. is_plugin_active()

判断某个插件是否激活正在使用。

添加到主题之后,我们看到出现了熟悉的文章分类功能,只不过上面的文案全部变成我们自定义的内容了:

4. 自定义内容类型的地址重写

'has_archive' => true,  // 文章是否有归档页面
'rewrite'     => array('slug' => 'film', 'with_front' => false),
// 是否url重写

插件 》Custom Post Type Permalinks:自定义文章类型固定链接设置插件

文章中的条件判断

下面的例子讲述了当用户访问一篇文章的时候如何使用 is_single()
来显示一些特殊的内容。

  1. if ( is_single() ) {
  2.    echo ‘This is just one of many fabulous entries in the ‘ . single_cat_title() . ‘ category!’;
  3. }

下面的例子介绍了如何在主循环中使用条件判断语句。功能是在首页(index)中显示文章的摘要,而在文章(single)和主页(home)中显示文章的正文内容。

  1. if ( is_home() || is_single() ) {
  2.    the_content();
  3. }
  4. else {
  5.    the_excerpt();
  6. }
function my_custom_post_product; register_post_type; }add_action( 'init', 'my_custom_post_product' );

2. 自定义字段的显示

<?php while(have_posts()) : the_post(); ?>
  <div class="entry-entent">
    <h1><?php the_title(); ?></h1>
    <?php if(get_field('runtime')): ?>
      <!-- 判断是否填写了runtime字段 -->
      <strong>片长:</strong><?php the_field('runtime'); ?>
      <!-- 显示runtime字段 -->
    <?php endif; ?>
    <?php the_content(); ?>
  </div>
<?php endwhile; ?>

在 WordPress 主题和插件开发中,条件判断标签(Conditional
Tags)是非常重要的,通过条件判断标签,我们可以判断各种情况,从而使用对应的代码等。例如在顶部导航条中有一个“首页”选项,在首页的时候需要设置
成高亮,我们可以在头部导航模板文件(header.php)中使用条件判断标签
is_home() 来判断当前页面是不是首页,然后再输出高亮的 class。

这时候我们可以新建 Movie
发表一篇电影类型的文章了。但是这样与文章类型基本相同,我们需要更多的自定义来完善我们的
Movie 类型。为 Post Type
添加分类功能
就电影来说,可以分为科幻、动作、战争等类别,那么我们就为自定义的
Movie
添加分类功能,这样就可以编辑新分类以及归类我们的电影了。这个分类跟文章里面的分类性质是一样的。添加分类功能需要使用函数
register_taxonomy,使用方法也很简单,跟注册 Post Type
函数类似,只不过多了一个参数用来指定对应的 Post Type :

内容类型 – Custom Post Types

判断网站的 Admin (对于多站点网站)

  1. is_super_admin()

判断当前用户是否是整个网站中的管理员。

老规矩,具体参数内容查看官方文档,这里只介绍常用用法。我们注册一个 Meta
Box :

1. 自定义分类法

分类法就是对内容进行分类的方法,WP提供了两种,一种叫category分类,另一种叫tag标签;分类可以拥有层级关系,而标签没有层级关系。
创建更多的分类法,然后分配到指定的内容类型上去使用

/*
 * 自定义分类法 - 电影类型
 */
function movietalk_custom_taxonomy_genre(){
  $labels = array(
    'name' => '类型',
    'singular_name' => '类型',
    'search_items'  => '搜索类型',
    'popular_itmes' => '热门类型',
    'all_items'     => '所有类型',
    'parent_item'   => null,
    'parent_item_colon' => null,
    'edit_item'     => '编辑类型',
    'update_item'   => '更新类型',
    'add_new_item'  => '添加新类型',
    'separate_items_with_commas'  => '使用逗号分割不同的类型',
    'add_or_remove_items' => '添加或移除类型',
    'choose_from_most_used' => '从使用最多的类型里选择',
    'menu_name'     => '类型',
    );
  $args = array(
    'public'  => true,
    'labels'  => $labels,
    );
  register_taxonomy('genre', 'movie', $args);
  register_taxonomy($taxonomy, $object_type, $args);
  //$taxonomy 要注册的分类法的名称
  //$object_type 分类法所对应的文章类型
  //$args 相关参数

}
add_action('init', 'movietalk_custom_taxonomy_genre');

文章页面(Single Post)

  1. is_single()

判断当前页面是否是一篇文章或者是附件页面或者自定义文章类型页面。注意,WordPress
中文章(Single)和页面(Page)是不同的概念。这个条件判断标签可以附加参数。

  1. is_single( ’17’ )

判断当前文章是否是 id 为 17 的文章。

  1. is_single( ‘Irish Stew’ )

判断当前文章的标题是否是 “Irish Stew”。

  1. is_single( ‘beef-stew’ )

判断当前文章的别名(Slug)是否为 “beef-stew”。

  1. is_single( array( 17, ‘beef-stew’, ‘Irish Stew’ ) )

传递多个参数需要使用数组。上面条件判断标签判断满足 id 为 17 、别名为
beef-stew、标题为 Irish Stew 任意一个条件文章被访问时返回 True。

  1. is_single( array( 17, 19, 1, 11 ) )

判断多个文章的 id,用法同上。

  1. is_single( array( ‘beef-stew’, ‘pea-soup’, ‘chili’ ) )

判断多个文章的别名,用法同上。

  1. is_single( array( ‘Beef Stew’, ‘Pea Soup’, ‘Chili’ ) )

判断多个文章的标题,用法同上。

注意:这个函数对于传递的参数,并无法很明确的判断参数究竟是
id、文章标题或者是文章别名,如果参数为 17,当 id 为 17 的文章会返回
True,当 Slug 为 17 的文章也会返回 True。

就本例而言,可以配置如下常用参数:

5. 使用页面模板来显示自定义内容列表

自定义内容列表模板文件

// page-movie.php
<?php
/*
 * Template Name: 电影页面
 */
 get_header(); ?>
<div class="entry-content">
  <?php query_posts('post_type=movie'); ?>
  <!-- query_posts():放在LOOP之前,限定循环所需要的条件 -->
  <?php while(have_posts()):the_post(); ?>
    <h1><?php the_title(); ?></h1>
    <?php the_content(); ?>
  <?php endwhile; ?>
</div>

首页(Front)

  1. is_front_page()

判断当前页面是否是博客首页。首页和上面的主页面不同,首页可以是文章索引页面,也可以是你在“后台”->“设置”->“阅读”中设置的静态首页。

不过在这里我还是需要提醒下,博客内置的post还是有点点不同的,你可以利用它含有分类、标签等去标识内容的!为什么要自定义文章模型?Wordpress已经提供一些完善的默认文章模型,并适用于大多数站点,但我们还是需要更多的选择。我列举了一些我想到的一些可能有用内容模型,并链接到相对应的例子。

3. 自定义内容类型的更多参数

'menu_postion'  => 5,   // 菜单项所在位置
'supports'  => array('title', 'editor', 'thumnail', 'excerpt', 'custom-fields','revisions'),
// 对文章类型的一些功能支持(标题、作者、特色图像、摘要、自定义字段等)

使用条件判断标签的实例

下面给出一些例子,让你明白上面的判断标签如何使用。

然后在配置参数里面指定了回调函数
movie_director_meta_box,我们需要在这个函数里面创建表单:

字段

后台控制面板(Administration Panels)

  1. is_admin()

判断当前页面是否是后台的控制面板(Dashboard)。

在上面的 $query 变量里面设置的 post_type
数组就是要在主循环里面展示的内容,将你的自定义 Post Type
填写进去就可以在首页中显示出来了。设置自定义 Post Type
的固定连接
创建一个新的 Post Type 有时候也是为了更方便做
SEO,所以设置它的固定连接也非常重要。这里主要用到注册 Post Type
的参数数组里面的 rewrite 参数,常用以下几两项:slug
=》自定义固定连接结构别名,默认是使用 Post Type 名,可以被翻译。一般来说
Post Type 名可能与实际需要的 URL 不一样( Post Type 为 movie,但 URL
可能需要 movies),就可使用该项自定义。with_front =》
固定连接是否以根目录为基础路径。如果你在固定连接设置页面设置你的结构为
/archives/,那么你的 Post Type 生成的连接默认为 /archives/movie
如果设置该项为 false 即可去掉前面的 /archives/
直接基于根路径生成固定连接。大功告成,但这只是 Post Type
最基础的用法,Post Type
还有其他更高级的用法,更详细的参数配置还需要你去进一步挖掘来适应你网站的功能需求。

1. 自定义字段

WP本身就有自定义字段功能,在发布内容的时候,我们可以定义一段额外的字段,然后为这些字段输入响应的内容。在主题的模板文件里,我们可以用代码来调用并显示这些自定义字段的内容。

插件 》Advanced Custom
Fields:我们可以创建不同的字段组,然后分配到指定的内容类型上去使用。

菜单栏 》字段 》新建 》添加字段
规则(创建一组规则以确定自定义字段在哪个编辑界面显示) 》文章类型 == movie

判断当前主题功能

  1. current_theme_supports()

判断当前主题的功能特性是否存在。

什么是自定义post?不要想当然的认为这里的post就是就是指博客中的文章,它只不过是一个文章类的代理词而已,甚至你还可以认为它是内容。自定义模型是没有一个很标准的什么规定的,文章模型可以是你想的任何一个内容模型,就拿wordpress本身来说就内置了以下几个内容文章模型:

4. 关系字段

判断引用通告(Trackback)

  1. is_trackback()

判断当前 WordPress 主题是否开启了 Trackback
功能。这个判断标签是为开发者提供的。

$post_type 参数就是你自定义 Post Type 的名称,Post Type
可以自定义的功能非常多,所以这个函数里面的 $args
参数会很多。所以通常会用下面这种格式来注册:

分类法

判断是否是主站点(对于多站点网站)

  1. is_main_site()

判断当前站点在整个网络中,是否是主站点。

包裹在一个函数中,定义一个数组,然后挂靠到 init 这个 action 上。这样
WordPress 在初始化的时候,就会执行这个函数注册一个自定义 Post
Type,因为调用 register_post_type() 的时候,必须要在 admin_menu
action 之前,在 after_setup_theme action 之后,所以这里最好挂靠到 init
action
上。参数很多,为了写教程方便,只列出比较常用的参数,大体结构如下:

评论相关(Comments)

  1. is_comments_popup()

判断是否在评论弹出框的窗口中。

  1. comments_open()

判断评论功能是否开启,必须用在主循环中。

  1. pings_open()

判断文章 ping 功能是否开启,必须用在主循环中。

这里为了直观方便,我直接使用了中文,更好的应该是使用英文然后通过本地化函数来翻译成中文。参数有点多,也可以使用
generatewp 工具自定义参数,然后改改,会稍微方便一点。从上面代码可以看到
$args 数组里面有一个 labels
配置项,用来配置显示文案有关的内容,为了清晰所以单独拿出来创建了一个数组。其他配置项看下英文也能猜出大体意思,如果想要详细了解,可以看下官方文档:register_post_type
。将上面代码加到主题 functions.php 的最下面,进入后台你会发现多出了
Movies 选项,这样表示注册成功:

判断搜索结果页面(Search Result Page)

  1. is_search()

判断当前页面是否为一个搜索结果页面。

register_taxonomy( $taxonomy, $object_type, $args );

置顶文章(Sticky Post)

  1. is_sticky()

WordPress
带有置顶文章的功能,使用这个标签判断是否为置顶文章,需要传递一个参数(通常为文章
id,用法同上)。如果不想传递参数,需要用在主循环(Loop)中,由主循环提供。通常的用法是在主循环输出文章索引列表的时候,使用
is_sticky() 判断当前文章是否为置顶文章,然后在置顶文章的 title 前面输出
“[置顶]” 之类的标志。

添加完之后,我们可以看下所有电影:

判断边栏是否已经激活可用

  1. is_active_sidebar()

判断给出的边栏是否激活(正在使用)。如果边栏(用 name、id、number
标志)正在使用,就会返回 True。

这里我们添加两个分类作为演示。为 Post Type 添加自定义 Meta
Box
我们想要添加的电影类型不能仅仅只有正文内容,我们还需要额外添加一些
导演 之类的有关内容。那么就需要添加自定义 Meta Box,Meta Box
可以在文章发表页面中添加自定义的表单,编写文章的时候可以填写额外的信息然后在前端调用出来。自定义
Meta Box 需要用到 add_meta_box 函数:

判断是否是网站的一部分(对于多站点网站)

  1. is_multisite()

判断当前的站点是否是 WordPress MultiSite 的一部分。

OK,我们的后端部分就这样愉快的完成了。打开生成好的链接看下,咦,Not
Found?是这样的,如果你的网站设置了固定连接,当你新建了 Post Type
之后,你必须要在后台更新一下固定连接设置才行。找到后台固定连接,再点击一下下面的“保存设置”,之后就可以正常访问了。展示
Post Type 的内容
单纯创建 Post Type
只是可以让你输入内容,没有什么意义,我们还需要在前台输出自定义 Post Type
的内容。自定义 Post Type 的模板和样式根据 WordPress 的模板调用规则
我们可以得知,我们只需要创建 archive-[post_type].php 和
single-[post_type].php 就可以实现该 Post Type
的列表自定义和文章自定义。当访问 Post Type,WordPress
会优先调用这些模板来渲染。需要注意的是,你需要在注册 Post Type
的时候设置 ‘has_archive’ => true
才会有列表。现在我们就把主题里自带的 archive.php 和 single.php
文件复制一份命名为 archive-movie.php 和
single-movie.php,为了演示,这里我不做很多自定义,只是输出导演信息表示一下。我们分别在
L.56 和 L.23 附近的合适位置输出 Meta Box 信息:

判断预览页面

  1. is_preview()

判断一篇文章是否在预览(文章本身处于草稿状态)。

然后刷新访问电影列表和具体的电影就可以看到输出的导演信息了。这里只是举个例子,实际中往往会自定义结构和输出的信息格式等,这里不再进一步修改。这里不再麻烦演示了。调用
WP_Query 高度自定义调用 Post Type
的内容上面操作依赖模板,如果需要高度自定义或者在页面的某个模块中调用列表,就需要用到
WP_Query 类来调用:

所有的条件判断标签都会判断某个条件是否成立,然后返回 True 或者 False
。此外有些条件判断标签还可以使用一些参数进一步的判断,下面是所有的
WordPress 条件判断标签:

add_action("manage_posts_custom_column", "movie_custom_columns");add_filter("manage_edit-movie_columns", "movie_edit_columns");function movie_custom_columns{ global $post; switch  { case "movie_director": echo get_post_meta( $post->ID, '_movie_director', true ); break; }}function movie_edit_columns{ $columns['movie_director'] = '导演'; return $columns;}

新金沙3777 1

add_action( 'add_meta_boxes', 'movie_director' );function movie_director() { add_meta_box( 'movie_director', '电影导演', 'movie_director_meta_box', 'movie', 'side', 'low' );}

判断自定义分类页面(Taxonomy)

自定义分类页面并非是上面的 category 那种分类页面,而是指 WordPress
分类系统页面。在 WordPress 默认内置了两种分类系统:category 和
tag,同时支持开发者自定义分类系统。

  1. is_tax()

判断当前页面是否为一个分类系统的存档页面。

  1. is_tax( ‘flavor’ )

判断当前页面是否为一个名为 flavor 自定义分类的存档页面。

  1. is_tax( ‘flavor’, ‘mild’ )

判断当前自定义分类 flavor 页面的别名是否为 mild。

  1. is_tax( ‘flavor’, array( ‘sharp’, ‘mild’, ‘extreme’ ) )

判断当前自定义分类 flavor 页面的页面是否为 sharp、mild、extreme
中的一个。

  1. has_term()

判断当前页面是否带有自定义分类。

  1. has_term( ‘green’, ‘color’ )

判断当前页面是否是否带有别名为 green 的自定义分类 color。

  1. has_term( array( ‘green’, ‘orange’, ‘blue’ ), ‘color’ )

判断当前页面是否是否带有数组中的自定义分类 color。

function my_custom_post_movie() { $labels = array( 'name' => _x( 'Movies', 'post type 名称' ), 'singular_name' => _x( 'Movie', 'post type 单个 item 时的名称,因为英文有复数' ), 'add_new' => _x( '新建电影', '添加新内容的链接名称' ), 'add_new_item' => __, 'edit_item' => __, 'new_item' => __, 'all_items' => __, 'view_item' => __, 'search_items' => __, 'not_found' => __, 'not_found_in_trash' => __, 'parent_item_colon' => '', 'menu_name' => 'Movies' ); $args = array( 'labels' => $labels, 'description' => '我们网站的电影信息', 'public' => true, 'menu_position' => 5, 'supports' => array( 'title', 'editor', 'thumbnail', 'excerpt', 'comments' ), 'has_archive' => true ); register_post_type;}add_action( 'init', 'my_custom_post_movie' );

判断是否为日期存档页面(Date Page)

  1. is_date()

判断当前页面是否为任何的按时间存档的页面。

  1. is_year()

判断当前页面是否为按年份存档的页面。

  1. is_month()

判断当前页面是否为按月份存档的页面。

  1. is_day()

判断当前页面是否为按日期存档的页面。

  1. is_time()

判断当前页面是否为按照小时、分钟、秒存档的页面。

  1. is_new_day()

判断当前页面是否为文章日期的新的一天,必须用在主循环中。

add_meta_box( $id, $title, $callback, $post_type, $context,$priority, $callback_args );

判断内容分页

在文章和页面中,有时候内容很多,在文章中插入

  1. <!–nextpage–>

标签可以将内容分隔开分成不同的页面,并通过对应的函数获取分页的列表。下面的例子,可以判断当前是在第几个页面中,这样你就可以在某个页面中输出一些特别的信息(例如在第一个页面中,输出一个提示)。

例子1:

  1. <?php
  2. $paged = $wp_query->get( ‘page’ );
  3. if ( ! $paged || $paged < 2 ) {
  4.     // 这里是不带有分页或者是带有分页页面的第一页  
  5. } else {
  6.    // 这里是带有分页的其他页面。  
  7. }
  8. ?>

例子2:

  1. <?php
  2. $paged = get_query_var( ‘page’ ) ? get_query_var( ‘page’ ) : false;
  3. if ( $paged === false ) {
  4.     // 这里是不带有分页或者是带有分页页面的第一页  
  5. } else {
  6.    // 这里是带有分页的其他页面。  
  7. }
  8. ?>

列表空荡荡的,好难看,我可不可以加上导演字段?当然可以,使用 [manage
$post type posts custom
column]()
即可实现,我们添加:

文章类型(Post Type)

  1. get_post_type()

严格意义上,这并不是一个条件判断标签,它会返回当前文章注册的文章类型,并且可以通过类似
if ( ‘book’ == get_post_type() ) … 来实现判断文章类型的功能。

  1. is_singular()

判断是否满足 is_single、is_page 和 is_attachment
的任意一个条件,满足返回 True。可以测试所有的文章类型

  1. post_type_exists()

判断某个文章类型是否被注册了,需要传递一个文章类型参数。它并不是测试某文章是否属于某个文章类型。

  1. is_post_type_hierarchical( $post_type )

如果 $post_type 在注册的时候设置了支持层次( hierarchical support
)返回 True。例如:is_post_type_hierarchical( ‘book’ ) 。

  1. is_post_type_archive()

判断是否在任何的自定义文章类型存档页面(post type archive)。

  1. is_post_type_archive( $post_type )

判断是否在 $post_type 中符合条件的文章类型存档页面,$post_type
可以是一个单一的文章类型或者是一个文章类型数组。提示:如果想要应用文章类型存档功能,需要在注册文章类型的时候,将
has_archive 参数设置为 True。

register_post_type;

判断是否在主循环中

  1. in_the_loop()

判断是否在主循环内部。对开发者来说很有用。

你可以这样去理解:它只要是想我们使用博客文章那样用来创建、编辑和储存数据的一种很灵活的内容形式。

判断是否有摘要

  1. has_excerpt()

判断当前文章是否有摘要内容。

  1. has_excerpt( 42 )

判断文章 ID 为 42 的文章是否有摘要内容。

还可以使用下面代码来实现:

  1. <?php
  2. // 先获取全局变量 $post  
  3. global $post;
  4. if ( emptyempty( $post->post_excerpt ) ) {
  5.     // 如果文章没有摘要执行这块代码  
  6. } else {
  7.     // 如果文章带有摘要执行这块代码  
  8. }
  9. ?>

如果你想在文章没有摘要的时候,显示空内容:

  1. <?php if ( ! has_excerpt() ) {
  2.       echo ”;
  3. } else {
  4.       the_excerpt();
  5. }
$args = array( 'post_type' => 'product', 'posts_per_page' => 10 );$loop = new WP_Query;while  ) : $loop->the_post; echo ''; the_content(); echo '';endwhile;

判断单页面、文章页面或者附件页面

  1. is_singular()

只要 is_single()、is_page()、is_attachment() 返回 True,此函数返回
True。

  1. is_singular( ‘book’ )

判断当前文章是否属于自定义文章类型(Custom Post Types)“book”。

  1. is_singular( array( ‘newspaper’, ‘book’ ) )

判断当前文章是否属于数组中某个自定义文章类型。

add_action( 'pre_get_posts', 'add_my_post_types_to_query' );function add_my_post_types_to_query { if  && $query->is_main_query $query->set( 'post_type', array( 'post', 'page', 'movie' ) ); return $query;}

判断是否为 404 页面(404 Not Found Page)

  1. is_404()

判断当前页面是否带有 “HTTP 404:Not Found” 错误。

function my_taxonomies_movie() { $labels = array( 'name' => _x( '电影分类', 'taxonomy 名称' ), 'singular_name' => _x( '电影分类', 'taxonomy 单数名称' ), 'search_items' => __, 'all_items' => __, 'parent_item' => __, 'parent_item_colon' => __, 'edit_item' => __, 'update_item' => __, 'add_new_item' => __, 'new_item_name' => __, 'menu_name' => __; $args = array( 'labels' => $labels, 'hierarchical' => true, ); register_taxonomy( 'movie_category', 'movie', $args );}add_action( 'init', 'my_taxonomies_movie', 0 );

判断页面模版(Page Template)

判断当前页面是否由某个页面模版生成的。

  1. is_page_template()

判断是否使用了一个页面模版。

  1. is_page_template( ‘about.php’ )

判断应用的页面模版是否是 “about”
这个模板。注意,这个参数与其他参数不同,如果你想判断是否是由某个页面模版声称的,你需要将那个页面模版的文件名填上去,包括后面的
.php 后缀。

查询出来之后就跟常规的主循环一样了,自定输出结构即可。在首页列表中显示自定义
Post Type 的内容
虽然我们自定义好了 Post Type
同时也编写了一些内容,但是在首页的列表里面并没有显示出来。自定义的 Post
Type 的内容不会自动混入主循环里面。那如何让自定义 Post Type
的内容显示出来?你需要使用 pre_get_posts 这个 action 来做一些处理:

判断分类页面(Category)

  1. is_category()

判断当前页面是否为分类目录或者存档(archive)页面。

  1. is_category( ‘9’ )

判断当前分类页面的 ID 是否为 9。

  1. is_category( ‘Stinky Cheeses’ )

判断当前分类页面的名字是否为“Stinky Cheeses”。

  1. is_category( ‘blue-cheese’ )

判断当前分类页面的别名是否为“blue-cheese”。

  1. is_category( array( 9, ‘blue-cheese’, ‘Stinky cheeses’ ) )

同上。

  1. in_category( ‘5’ )

判断当前文章是否属于某个特定分类目录(id 为 5),返回 True。注意,这里是
in 而不是 is,与上面的不同。

  1. in_category( array( 1,2,3 ) )

判断当前文章是否属于某些特定的分类目录。

echo '导演:'.get_post_meta, '_movie_director', true );

判断订阅页面

  1. is_feed()

虽然最关键的函数就在最后一句,但是一定要注意安全的校验。把这些代码添加进
functions.php 文件之后,你的 Meta Box
就可以正常工作了。如果你需要更多表单,按照这个模式自定义表单结构,然后添加保存函数即可。下面,我们迫不及待的添加两部电影《鱼与锅之战:宿命对决》
和 《鱼与锅之战:我爱水煮鱼》 内容如下:

这类的条件判断标签一般会返回一个布尔值,这样我们就可以使用 if
语句判断不同的页面不同的情况而分别使用不同的代码。

你还可以想到我列举之外的更多内容模型。而且我也想在以后学习更多关于论坛和票务系统的想法。这两个系统我已经实现并希望的得到一些反馈。

同时使用多个条件判断标签

  1. // 同时判断两个条件  
  2. if ( is_single() || is_page() ) ) {
  3. // 如果当前是一篇文章或者一个页面,就执行这块代码  
  4. }
    1. if ( is_archive() && ! is_category( ‘nachos’ ) ) {
  5. // 如果当前是一个分类的存档页面(除了 nachos 分类),就执行这块代码  
  6. }
  7. // 同时判断三个条件  
  8. if ( $query->is_main_query() && is_post_type_archive( ‘products’ ) && ! is_admin() ) {
  9.     // 如果当前是 main query 并且是 products 自定义文章类型的存档页面  
  10.     // 同时没有用 admin 账号登陆后台,就执行这块代码  
  11. }
    1. if ( is_post_type_archive( ‘movies’ ) || is_tax( ‘genre’ ) || is_tax( ‘actor’ )  ) {
  12.     // 如果当前是 Movies 的自定义文章类型存档  
  13.     // 或者是 genre 分类存档页面  
  14.     // 或者是 actor 分类存档页面,就执行这块代码  
  15. }

创建一个 post type创建一个新的 Post Type 需要使用
register_post_type 函数来注册一下。需要在你主题的 functions.php
文件下调用该函数:

判断标签页面(Tag)

  1. is_tag()

判断当前页面是否为标签页面。

  1. is_tag( ‘mild’ )

判断当前标签页面的别名是否为 “mild”。

  1. is_tag( array( ‘sharp’, ‘mild’, ‘extreme’ ) )

判断当前标签页面的别名是否是 “sharp”、“mild”或者“extreme”中的某个。

  1. has_tag()

判断当前文章是否有一个标签,必须用在主循环中

  1. has_tag( ‘mild’ )

判断当前文章是否有标签 “mild”。

  1. has_tag( array( ‘sharp’, ‘mild’, ‘extreme’ ) )

判断当前文章是否有数组里的那些标签。

房产清单 活动日历 影视资料库 书籍资料库 没有很多集成问题的论坛系统
类似WordPress Trac的票务系统 设计相册或作品集

主页面(Main)

  1. is_home()

判断当前页面是否是博客主页面。主页面通常是显示博客内容列表的首页,但是如果你在“后台”->“设置”->“阅读”中设置了静态首页和文章索引页面的话,当访问文章索引页面是返回
True。

判断被分页页面(Paged Page)

  1. is_paged()

这里的分页指的是存档页面,如果一个日志或者静态页面的内容通过通过

  1. <!–nextpage–>

拆分成多个页面,这些不能算为 paged page

判断作者页面(Author)

  1. is_author()

判断当前页面是否是一个作者存档页面。

  1. is_author( ‘4’ )

判断当前页面是否为 id 为 4 的作者页面。

  1. is_author( ‘Vivian’ )

判断当前存档页面是否是 Vivian(Nickname) 的作者存档页面。

  1. is_author( array( 4, ‘john-jones’, ‘Vivian’ ) )

判断当前存档页面是否属于 id 为 4,或者名字为 “john-jones”、“Vivian”
的作者存档页面。

  1. is_multi_author()

判断当前博客是否有超过一个作者发表过文章。WordPress 3.2 以上版本可用。

判断任意存档页面(Any Archive Page)

  1. is_archive()

判断当前页面是否为一个存档页面,包括:分类、标签、作者页面、日期存档页面等。

判断是否为附件页面(Attachment)

  1. is_attachment()

判断当前页面是否为一个附件页面。附件页面通常为一个图片或者是一些其他文件,可以在编辑文章上传文件那里进行设置。

判断子页面(sub-Pages)

WordPress 中的页面(page)是有父子级关系的,判断是否为子页面时,没有内置
is_subpage() 这样的函数,但是你可以使用下面的方法来判断。

方法1:

  1. <?php
  2. global $post;     // 下面代码需要用在主循环中,如果你在循环外使用,需要声明全局变量 $post        
  3. if ( is_page() && $post->post_parent ) {
  4.     // 这是一个子页面  
  5. } else {
  6.     // 这不是一个子页面  
  7. }
  8. ?>

建议将下面的方法2加入你的 functions.php 文件中,下面的 is_subpage()
函数的原理与方法1类似,但是可以返回当前页面父页面的 ID 或者是 false。

十大正规网赌网址 ,方法2:

  1. <?php
  2. function is_subpage() {
  3.     global $post;                              // 获取页面的相关信息  
  4.     if ( is_page() && $post->post_parent ) {   // 判断是否有父页面  
  5.         return $post->post_parent;             // 如果有返回父页面的 ID  
  6.     } else {
  7.         return false;                          // 如果没有返回 false  
  8.     }
  9. }
  10. ?>

如果你经常需要判断子页面,强烈建议使用方法2。

如果需要判断父页面是否为某个特定的页面,可以使用方法3的代码。方法3代码会判断的更加详细,从而更加便于自定义和个性化(例如加一些图片)。

方法3:

  1. <?php
  2. if ( is_page( ‘about’ ) || ‘2’ == $post->post_parent ) {
  3.     // 这个页面是“about”页面,或者它的父页面是“about”  
  4.     $bannerimg = ‘about.jpg’;
  5. } elseif ( is_新金沙3777 ,page( ‘learning’ ) || ’56’ == $post->post_parent ) {
  6.     $bannerimg = ‘teaching.jpg’;
  7. } elseif ( is_page( ‘admissions’ ) || ’15’ == $post->post_parent ) {
  8.     $bannerimg = ‘admissions.jpg’;
  9. } else {
  10.     $bannerimg = ‘home.jpg’; // 如果都不满足的话,就用这个图片  
  11. }
  12. ?>

方法4是一个函数可以让你更容易的实现判断,只需要传递参数即可,如果正在访问对应页面,将会返回
True。

方法4:

  1. <?php
  2. function is_tree( $pid ) {      // $pid = 传递的 ID 参数是我们希望判断的页面 ID  
  3.     global $post;
  4.     if ( is_page($pid) )
  5.         return true;            // 当前正在这个页面,所以返回 True        
  6.     $anc = get_post_ancestors( $post->ID );
  7.     foreach ( $anc as $ancestor ) {
  8.         if( is_page() && $ancestor == $pid ) {
  9.             return true;
  10.         }
  11.     }
  12.     return false;  // 没有在当前页面,并且这个页面没有子页面  
  13. }
  14. ?>

可以将这个函数添加进 functions.php 中,调用 is_tree( ‘id’ )
就可以判断当前页面是否是指定页面或者是这个页面的子页面。相比较方法3
is_tree( ‘2’ ) 的功能和 is_page( ‘about’ ) || ‘2’ ==
$post->post_parent 是一样的。

注意,如果页面多于一级,那么父级页面指的是上一层页面,不是这个页面层次关系最顶层的页面。

判断页面(Page)

WordPress
中内置的有两种内容形式,一种是文章(Post)另一种是页面(Page),这里要判断的是页面,而不是指你网站的某个网页。

  1. is_page()

判断当前页面是否为“页面”。

  1. is_page( 42 )

判断当前页面是否是一个 ID 为 42 的页面。

  1. 【新金沙3777】定义新的自定义小说类型的质量,WordPress 条件判别标签。is_page( ‘About Me And Joe’ )

判断当前页面是否是一个标题为 “About Me And Joe” 的页面。

  1. is_page( ‘about-me’ )

判断当前页面是否是一个别名为 “about-me” 的页面。

  1. is_page( array( 42, ‘about-me’, ‘Aout Me And Joe’ ) )

一次包含多种情况的判断,需要使用数组传递,用法同上。

相关文章

Your Comments

近期评论

    分类目录

    • 没有分类目录

    功能


    网站地图xml地图