understanding if statement

时间:2019-08-01 作者:user2445

我在一个主题中有几行代码,我不明白,谁能解释一下。

$screen = get_current_screen(); // understood this
if ( $screen && \'post\' == $screen->base && \'page\' == $screen->id ) { // not sure about this line
// code to execute something
}
据我所知,代码是在post类型为post或page时执行的,我不确定如何执行,我需要添加另一个自定义post类型(player) 因为if 陈述

1 个回复
SO网友:Sally CJ

当post类型为post或page时执行代码

否,仅当职位类型为page (因为\'page\' == $screen->id).

因为if 语句实际上检查当前管理屏幕是否是用于编辑或创建页面的屏幕(post类型为page), URL如下所示:(请注意,在编辑帖子/页面/CPT时,帖子类型在URL中不可见)

http://example.com/wp-admin/post.php?post=2&action=edit

<在此类屏幕上&mdash<编辑或创建帖子/页面/CPT,$screen->id 相当于$screen->post_type 这是post类型(slug)。

$screen->basepost 它是当前URL中文件名的基本名称&mdash;base name是不带扩展名的文件名&mdash;所以如果文件名是post.php, 基本名称为post. 但是,当创建帖子/页面/CPT时,文件名实际上是post-new.php, 但仍然是$screen->basepost (而不是post-new) 因为WordPress剥离了-new 部分

此外,您可以通过检查屏幕的动作来区分编辑和创建;i、 e.是否$screen->actioneditadd (例如。\'edit\' == $screen->action 检查操作是否正在编辑)。

enter image description here

我需要添加另一个自定义帖子类型(player) 因为if 陈述

只需更改:

\'page\' == $screen->id
收件人:

in_array( $screen->id, array( \'post\', \'page\', \'player\' ) )
或完整代码:

if ( $screen &&                // 1. we\'ve got a valid screen
    \'post\' == $screen->base && // 2. the screen base is either post.php or post-new.php
    // and 3. the post type is one of the array values.
    in_array( $screen->id, array( \'post\', \'page\', \'player\' ) )
) {
    // your code here
}
我希望这有帮助,您可以查看get_current_screen()\'s函数参考here. :)

相关推荐

主题定制--当使用php变量时,如何在外部存储javascript?

EDIT: Complete re-write在过去的几周里,我一直在为我的主题开发一个自定义扩展。这是我第一次用Wordpress“开发”。所有的工作都很好,我对结果的功能很满意,尽管它需要一些整理。我希望将我的js函数移到一个外部文件-自定义。js。原始格式:main-block.php$custom1 = $custom_meta[\'custom1\']; <form name=\"customForm\"> Validatio