it-swarm.com.de

Verknüpfen Sie Benutzer mit einem benutzerdefinierten Beitragstyp

Ich möchte einen Benutzer mit einem benutzerdefinierten Beitragstyp (College) verknüpfen. Kennt jemand einen guten Weg, dies zu tun?

Das ultimative Ziel ist es, Links anzuzeigen, um das College anzuzeigen und zu bearbeiten

Ich habe erweiterte benutzerdefinierte Felder verwendet, aber keines der relationalen Felder scheint das Verknüpfen von Benutzern zu unterstützen

1
hyp0thetical

wenn Sie versuchen, den Beitrag im Benutzerprofilbereich zu verknüpfen, ist der folgende Code möglicherweise ein guter Ausgangspunkt. Sie können dies in Ihre functions.php-Datei einfügen. Die erste Funktion zeigt ein Auswahl-Tag mit allen Beiträgen Ihres benutzerdefinierten Beitragstyps im Benutzerprofilbereich an. Der Optionswert ist die Beitrags-ID und der Titel der Beitragsname. Die nächste Funktion speichert die Benutzerprofilinformationen, fügt ein Benutzer-Metafeld hinzu oder aktualisiert es (in diesem Fall habe ich "Benutzerfotos" verwendet, in denen die ID des Beitrags gespeichert wird. Wenn Sie die Beiträge des Benutzers an einer beliebigen Stelle auf der Website anzeigen möchten, können Sie dies tun Verwenden Sie WP_User_Query, und zeigen Sie die Metadaten des Benutzers an. Wenn Sie mehrere Posts einschließen möchten, aktivieren Sie ein Kontrollkästchen oder verwenden Sie das Attribut multiple im Tag select, und speichern Sie die Posts als Array im Metafeld. Der folgende Code wird nicht getestet. und war nicht ganz sicher, wie der Benutzerprofilabschnitt funktionieren soll. Entschuldigung, wenn dies nicht das ist, wonach Sie suchen.

<?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

Sie haben nicht genug Reputation, um einen Kommentar abzugeben.

Dank kcbluewave890 habe ich eine Lösung gefunden, aber es gab einige Dinge zu beheben. Hier ist mein Arbeitscode für die Datei 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