我正在开发一个插件,我会为数据库的每个值添加一个页面。
但对于每次刷新,都会添加一个同名的新页面。我怎样才能解决这个问题?
for ($i = 0; $i < count($namepages); $i++) {
mic_create_new_page($name[$i],$namepages[$i]);
}
function mic_create_new_page($name, $namepages) {
global $user_ID;
if (post_exists($namepages) == false) {
$new_post = array(
\'post_title\' => \'Services \' . $name,
\'post_content\' => \'New post content\',
\'post_status\' => \'publish\',
\'post_date\' => date(\'Y-m-d H:i:s\'),
\'post_author\' => $user_ID,
\'post_type\' => \'page\',
\'post_name\' => $namepages
);
$post_id = wp_insert_post($new_post);
}
}
register_activation_hook(__FILE__, \'create_new_page\');
最合适的回答,由SO网友:mozboz 整理而成
如果此代码位于函数中。php或直接在插件代码中,每次加载Wordpress时,顶部的for循环都会运行,最后的钩子引用一个不存在的函数。
因此,您可能希望将顶层代码放入函数中:
function zed93_create_new_page {
for ($i = 0; $i < count($namepages); $i++) {
mic_create_new_page($name[$i],$namepages[$i]);
}
}
并将挂钩改为:
register_activation_hook(__FILE__, \'zed93_create_new_page\');
请注意,函数名可以是任何名称,但使其对项目唯一有助于避免与其他插件/主题发生冲突。