Je souhaite donner à mes utilisateurs la possibilité de personnaliser la page d'accueil du site. Par exemple, si quelqu'un n'est pas connecté, seules les catégories par défaut apparaissent.
Une fois que quelqu'un crée un compte et se connecte, il/elle a la possibilité de ' ajouter/suivre ' plusieurs catégories et sujets ( tags ) et Résultats de la recherche. Ces nouveaux messages seront ensuite ajoutés au flux sur la page d'accueil qu'ils verront.
J'ai beaucoup cherché des tutoriels et des plugins, mais je n'ai pas trouvé beaucoup. Il existe un thème de prime, bien que ce type de a cette fonction.
Surveillance des catégories Pressboard vous permet de définir une page d'accueil individuelle pour chaque utilisateur: activez simplement la surveillance des catégories afin que les utilisateurs puissent choisir eux-mêmes les sujets à charger.
( http://freetotry.me/pressboard/ -> bouton de configuration en haut à droite)
Je veux reproduire quelque chose de similaire à ce qui précède. Mais en y réfléchissant, je ne sais pas quelle serait la meilleure approche.
Est-ce que quelqu'un sait comment créer une page d'accueil personnalisée pour chaque utilisateur?
Trouver et combiner du code qui semble fonctionner pour les catégories. Donc, laisser le code si quelqu'un d'autre rencontre le même problème. Pour référence. - Filtrez toutes les requêtes avec une taxonomie spécifique - Ajout de données de profil utilisateur personnalisées en fonction de catégories
Ce qui suit permet à un utilisateur de choisir des catégories sur ce profil, après quoi la page d'accueil permettra d'afficher ses catégories sélectionnées.
//create the user category fields
add_action( 'show_user_profile', 'add_user_categories' );
add_action( 'edit_user_profile', 'add_user_categories' );
function add_user_categories($user ){
?>
<table class="form-table">
<tr>
<th><label for="user_categories"><?php _e("User categories"); ?></label></th>
<td>
<?php
$data = get_the_author_meta( 'user_categories', $user->ID );
$args = array( 'hide_empty' =>0, 'taxonomy'=> 'category');
$categories= get_categories($args);
if ($categories){
foreach ( $categories as $category ){
if(in_array($category->term_id,(array)$data)) {
$selected = 'checked="checked""';
} else {
$selected = '';
}
echo '<input name="user_categories[]" value="'.$category->term_id.'" '.$selected.' type="checkbox"/>'.$category->name.'<br/>';
}
}
?>
</td>
</tr>
</table>
<?php
}
//save the user category fields
add_action( 'personal_options_update', 'save_user_categories' );
add_action( 'edit_user_profile_update', 'save_user_categories' );
function save_user_categories( $user_id ){
if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }
update_usermeta( $user_id, 'user_categories', $_POST['user_categories'] );
}
function my_get_posts( $query ) {
// we only need to modify the query for logged in users
if ( !is_user_logged_in() ) return;
$current_user = wp_get_current_user();
// assuming that the users interest is stored as user_categories meta key
$user_categories = get_user_meta( $current_user->ID, 'user_categories', true );
$query->set( 'tax_query', array(
array(
'taxonomy' => 'category',
'field' => 'id',
'terms' => $user_categories
)
));
return $query;
}
add_filter( 'pre_get_posts', 'my_get_posts' );