我一直在调查,希望这能有所帮助。这是早期的开发,所以还没有完全通过测试,但似乎是可行的,所以希望它可以帮助您朝着正确的方向发展(好吧,无论如何是一个方向)。。
工作原理:它基本上从user\\u meta中删除cat条目,然后根据选择重新添加它们。它与用户注册过程挂钩,因此这可能会破坏任何其他用户注册!(我的网站只用于通过Subscribe2进行注册,所以我没有费心将其与此隔离)
在register\\u表单中。主题中的php(将模板目录插件中的php复制到主题中)
添加cat列表:
<?php
// preselect categories
echo \'<p>Select Categories</p>\';
$categories=get_categories();
foreach($categories as $category) {
echo "<input type=\'checkbox\' name=\'cats[]\' value=\'$category->term_id\' />";
echo $category->cat_name;
echo \'<br>\';
}
?>
然后在函数中添加:
///////////////////////////////////////////////////////////////////
// allow preselection of categories on signup through Subscribe2 //
///////////////////////////////////////////////////////////////////
add_action( \'user_register\', \'subscribe2_registration_save\', 10, 1 );
function subscribe2_registration_save( $user_id ) {
global $wpdb;
// delete the cats to start with
$wpdb->query("DELETE FROM wp_apb_usermeta WHERE user_id = \'".$user_id."\' AND meta_key LIKE \'s2_cat%\'");
// add new cats
if(isset($_POST[\'cats\'])){
$cats = $_POST[\'cats\'];
$str = \'\';
foreach($cats as $cat){
$str .= $cat.\',\';
$query = "INSERT INTO wp_apb_usermeta (user_id,meta_key,meta_value) VALUES (\'".$user_id."\',\'s2_cat".$cat."\',\'".$cat."\')";
//echo (\'<pre>\' . print_r($query,true) . \'</pre>\');
$wpdb->query($query);
}
$str = rtrim($str, ",");
}
// update the subscribed list
$query = "UPDATE wp_apb_usermeta SET meta_value = \'".$str."\' WHERE meta_key = \'s2_subscribed\' AND user_id = \'".$user_id."\'";
//echo (\'<pre>\' . print_r($query,true) . \'</pre>\');
$wpdb->query($query);
//echo(\'<hr>\');
//echo (\'<pre>\' . print_r($results,true) . \'</pre>\');
//echo(\'<hr>\');
//echo (\'<pre>\' . print_r($_POST,true) . \'</pre>\');
//echo(\'<hr>\');
//die (\'<pre>\' . print_r($user_id,true) . \'</pre>\');
}