我正在尝试理解我在网上找到的创建自定义用户登录页面的代码。这里我无法理解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() {
}
}
最合适的回答,由SO网友:CK MacLeod 整理而成
当我第一次开始使用foreach循环时,这个特殊的语法对我来说也很神秘,直到我需要它,它的有用性才变得显而易见。对于许多“代码中看到的东西”,都是这样
无论如何,要回答这个问题,在示例代码中,使用as $key => $value
制作密钥($slug
) 在随后的代码块中作为变量提供。这个$page_definitions
数组有两个顶级键,\'member-login\'
和\'member-account\'
哪个(在已经存在?检查之后)成为函数使用两个成员的值创建(插入)的两个新页面的slug(\'title\'
和\'content\'
) 数组或子数组作为新页面的标题和内容:一个标题为“登录”,内容为短代码[custom-login-form]
, 和一个名为“您的帐户”的[account-info]
短代码。
因此,如果我在该站点上,在函数运行后,我会找到两个页面,一个页面有一段siteurl/成员登录名,标题为登录,显示自定义登录表单等,另一个页面有一段siteurl/成员帐户,内容由帐户信息短码创建。这两个短代码可能会根据登录状态和用户身份生成不同的内容。
明白了吗?[在我第一次把答案搞糟后编辑并修复了!]