这不是PHP中变量的工作方式。你在定义它们之前就已经在使用它们了。它们不是稍后将被替换的模板。如果要在中使用这些变量$new_post
然后你需要定义$new_post
在定义这些变量之后,在循环内部。
function mic_create_new_page() {
global $user_ID, $wpdb;
$tableau_post = array ();
$tableau_post = mic_stock_in_array($tableau_post);
$res = $wpdb->get_results(\'select * from wp_secteurs\');
foreach ( $res as $ville ) {
$id = $ville->id_secteurs;
$secteur = $ville->libelle;
$slugmic = strtolower( str_replace( " ", "-", $secteur ) ) . "-s" . $id;
$new_post = array(
\'post_title\' => \'Service \' . $secteur,
\'post_content\' => \'[makeitseo-keyword]\',
\'post_status\' => \'publish\',
\'post_date\' => date(\'Y-m-d H:i:s\'),
\'post_author \' => $user_ID,
\'post_type\' => \'page\',
\'post_name\' => $slugmic
);
if ( ! in_array( normalize( $slugmic ), $tableau_post ) ) {
$post_id = wp_insert_post( $new_post );
}
}
}
有几个
code smells 在你的代码中,我还想指出:
首先,你依赖于一个全局变量,$user_ID
. 这是一个坏主意,因为现在您的函数过于依赖全局状态,这使得其结果不可预测且难以测试。您应该将用户ID作为参数从可靠定义为要使用的用户的位置传递给函数。例如,如果要在用户注册时使用user_register
钩子,则应使用传递到其回调中的用户ID:
function mic_create_new_page( $user_id ) {
// Now $user_id is guaranteed to be the ID of the user being registered.
}
add_action( \'user_register\', \'mic_create_new_page\' );
其次,我不知道这应该做什么:
$tableau_post = array ();
$tableau_post = mic_stock_in_array($tableau_post);
我想不出为什么要这样初始化一个变量,然后将其传递到一个函数中,只替换变量。虽然我对代码了解不多,无法提供任何建议,但我看不出为什么这样做行不通:
$tableau_post = mic_stock_in_array( array() );
但我怀疑你甚至不需要所有这些。