web-dev-qa-db-fra.com

Lier les utilisateurs à un type de message personnalisé

J'aimerais associer un utilisateur à un type de message personnalisé (collège). Est-ce que quelqu'un connaît un bon moyen de faire cela?

Le but ultime est d’afficher des liens pour voir et éditer leur collège

J'utilise les champs personnalisés avancés, mais aucun des champs relationnels ne semble permettre de relier les utilisateurs.

1
hyp0thetical

si vous essayez de relier la publication dans la zone du profil de l'utilisateur, le code ci-dessous peut constituer un bon point de départ. Vous pouvez mettre cela dans votre fichier functions.php. La première fonction affiche une balise de sélection avec toutes les publications de votre type de publication personnalisée dans la section du profil de l'utilisateur. La valeur de l'option est l'identifiant de la publication et le titre, son nom. La fonction suivante enregistre les informations de profil de l'utilisateur, ajoute ou met à jour un champ méta de l'utilisateur (dans ce cas, j'ai utilisé 'userphotos' qui stockera l'ID de la publication. Lorsque vous souhaitez afficher les publications de l'utilisateur n'importe où sur le site, vous pouvez utilisez WP_User_Query et affichez les métadonnées de l'utilisateur.Si vous souhaitez inclure plusieurs publications, une case à cocher ou utiliser l'attribut multiple dans la balise de sélection, et stockez les publications sous forme de tableau dans le métafield. Le code ci-dessous n'est pas testé, et je ne savais pas trop comment vous vouliez que la section de profil d’utilisateur fonctionne, alors nous nous excusons si ce n’est pas ce que vous recherchez.

<?php
function add_extra_user_fields( $user ) {
    $userid = get_user_meta($user->ID);
    $args = array(
     'post_type' => 'your_post_type',
     'posts_per_page' => -1,
    );
    $query = new WP_Query($args);
    ?>
    <select name="testprofile">Select a Post</p>
    <?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
        <option value="<?php the_ID(); ?>" 
        if (get_user_meta( $userid, userphotos, true) == $userid ){ 
            echo 'selected'; 
        }?>>
        <?php the_title(); ?>
        </option>
    <?php endwhile; endif; ?>
    </select>
    <?php
}

add_action( 'show_user_profile', 'add_extra_user_fields' );
add_action( 'edit_user_profile', 'add_extra_user_fields' );

function save_extra_user_fields( $user_id ) {
    update_user_meta( $user_id, 'userphotos', sanitize_text_field( $_POST['testprofile'] ) );
}

add_action( 'personal_options_update', 'save_extra_user_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_fields' );
2
kcbluewave890

Vous n'avez pas assez de réputation pour commenter, alors:

Grâce à kcbluewave890, j'ai trouvé une solution, mais il y avait des problèmes à résoudre. Voici mon code de travail pour le fichier functions.php:

function add_extra_user_fields( $user ) {
$args = array(
    'post_type' => 'YOUR_POST_TYPE',
    'posts_per_page' => -1,
);
$query = new WP_Query($args);
?>
<h3>Select Your College</h3>
<select name="college">
    <?php if ( $query->have_posts() ) : while ( $query->have_posts() ) : $query->the_post(); ?>
        <option value="<?php the_ID(); ?>"
               <? if (get_user_meta( $user->ID, "college", true) == get_the_ID() ) echo 'selected'; ?>>
    <?php the_title(); ?>
    </option>
<?php endwhile; endif; ?>
</select>
<?php
}

add_action( 'show_user_profile', 'add_extra_user_fields' );
add_action( 'edit_user_profile', 'add_extra_user_fields' );

function save_extra_user_fields( $user_id ) {
update_user_meta( $user_id, 'college', sanitize_text_field( $_POST['college'] ) );
}

add_action( 'personal_options_update', 'save_extra_user_fields' );
add_action( 'edit_user_profile_update', 'save_extra_user_fields' );
1
Milan Švehla