利用数组实现Foreach循环的工作

时间:2017-04-14 作者:Himanshu

我正在尝试理解我在网上找到的创建自定义用户登录页面的代码。这里我无法理解foreach循环是如何工作的(特别是这一行:$page\\u definitions as$slug=>$page in foreach参数)。我对使用数组非常陌生,正在努力学习它是如何工作的。

class Personalize_Login_Plugin {

    public static function plugin_activated() {
        // Information needed for creating the plugin\'s pages
        $page_definitions = array(
            \'member-login\' => array(
                \'title\' => __( \'Sign In\', \'personalize-login\' ),
                \'content\' => \'[custom-login-form]\'
            ),
            \'member-account\' => array(
                \'title\' => __( \'Your Account\', \'personalize-login\' ),
                \'content\' => \'[account-info]\'
            ),
        );

        foreach ( $page_definitions as $slug => $page ) {
            // Check that the page doesn\'t exist already
            $query = new WP_Query( \'pagename=\' . $slug );
            if ( ! $query->have_posts() ) {
                // Add the page using the data from the array above
                wp_insert_post(
                    array(
                        \'post_content\'   => $page[\'content\'],
                        \'post_name\'      => $slug,
                        \'post_title\'     => $page[\'title\'],
                        \'post_status\'    => \'publish\',
                        \'post_type\'      => \'page\',
                        \'ping_status\'    => \'closed\',
                        \'comment_status\' => \'closed\',
                    )
                );
            }
        }
    }
    public function __construct() {

    }
}

1 个回复
最合适的回答,由SO网友:CK MacLeod 整理而成

当我第一次开始使用foreach循环时,这个特殊的语法对我来说也很神秘,直到我需要它,它的有用性才变得显而易见。对于许多“代码中看到的东西”,都是这样

无论如何,要回答这个问题,在示例代码中,使用as $key => $value 制作密钥($slug) 在随后的代码块中作为变量提供。这个$page_definitions 数组有两个顶级键,\'member-login\'\'member-account\' 哪个(在已经存在?检查之后)成为函数使用两个成员的值创建(插入)的两个新页面的slug(\'title\'\'content\') 数组或子数组作为新页面的标题和内容:一个标题为“登录”,内容为短代码[custom-login-form], 和一个名为“您的帐户”的[account-info] 短代码。

因此,如果我在该站点上,在函数运行后,我会找到两个页面,一个页面有一段siteurl/成员登录名,标题为登录,显示自定义登录表单等,另一个页面有一段siteurl/成员帐户,内容由帐户信息短码创建。这两个短代码可能会根据登录状态和用户身份生成不同的内容。

明白了吗?[在我第一次把答案搞糟后编辑并修复了!]

相关推荐

无法在模板函数.php中使用IS_HOME

我试图在标题中加载一个滑块,但只在主页上加载。如果有帮助的话,我正在使用Ultralight模板。我正在尝试(在template functions.php中)执行以下操作:<?php if ( is_page( \'home\' ) ) : ?> dynamic_sidebar( \'Homepage Widget\' ); <?php endif; ?> 但这行不通。现在,通过快速的google,我似乎需要将请