Aufrufen einer Funktion beim Klicken auf eine Schaltfläche, Abrufen einer URL

Lesezeit: 4 Minuten

Steves Benutzeravatar
Steve

Ich bin neu bei WordPress. Ich versuche, die Funktion aufzurufen myprefix_edit_user_cb() um das Bearbeitungsformular zu erhalten, nachdem der Benutzer auf Bearbeiten geklickt hat.

function getdata()
{    
    $blogusers = get_users();
    foreach ( $blogusers as $user ) {
        echo '<span>' . esc_html( $user->user_email ) . '</span>';


        $editUrl = ??

        echo  "<a href="".$editUrl. "">Edit User</a>"; 

        echo '<br>';
    }   
}

mit Funktion:

 function myprefix_edit_user_cb(){    
     $user = intval($_REQUEST['user']);

    echo '
                <form action="' . $_SERVER['REQUEST_URI'] . '" method="post">
                <label>Username</label>
                <input type="text" value="' .$user->user_login  . '"
                <input type="submit">
        ';
}

  • Wo ist dieser Hook definiert: myprefix_edit_user ?

    – Mihai Papuc

    1. September 2017 um 4:16 Uhr

  • @MihaiPapuc wie soll ich? Ich bin neu und weiß nicht, wie.

    – Steve

    1. September 2017 um 4:47 Uhr

  • Wo hast du die Dokumentation für diesen Hook gefunden?

    – RRikesh

    1. September 2017 um 4:52 Uhr

  • @Steve, dein obiger Code ist aus dem Zusammenhang gerissen, also gibt es nicht viel, womit wir dir helfen könnten. Wie wäre es, wenn Sie die Frage umformulieren, um genau darauf hinzuweisen, was Sie tun müssen (z. B. welches Bearbeitungsformular), was Ihre Ideen zur Lösung Ihres Problems sind und auf welche Quellen Sie Ihre Ideen stützen? Ich denke, wir (oder andere Benutzer) könnten mit dieser Art von Informationen besser helfen.

    – Mihai Papuc

    2. September 2017 um 14:42 Uhr

  • Ich bekomme keine allgemeine Vorstellung von dem von Ihnen angegebenen Code, aber mein Vorschlag ist, zu überprüfen, ob Ihr Thema do_action(‘myprefix_edit_user’) fn enthält, bevor Sie auf die Schaltfläche klicken.

    – Manzoor Samad

    4. September 2017 um 19:38 Uhr


Benutzeravatar von Akshay Shah
Akshay Schah

Meiner Meinung nach müssen Sie ein Anfrage-Flag mit Ihrer Bearbeitungs-URL setzen.

Versuchen Sie den folgenden Code.

function getdata(){    
$blogusers = get_users();
foreach ( $blogusers as $user ) {
    echo '<span>' . esc_html( $user->user_email ) . '</span>';

    $deleteUrl = add_query_arg(array('action'=>'myprefix_delete_user', 'user_id'=>$user->ID));

    $editUrl = add_query_arg(array('action'=>'myprefix_edit_user', 'user'=>$user));

    echo  "<a href="".$deleteUrl. "">Delete User</a>"; 
    echo  "<a href="".$editUrl. "&edit=1">Edit User</a>"; 

    echo '<br>';
 }   
}

mit Aktion und Callback-Funktion mit Flag :

add_action('init','myprefix_edit_user_cb');
function myprefix_edit_user_cb(){    
 $user = intval($_REQUEST['user']);
 if($user == '')
 return;

 if($_REQUEST['edit'] == 1 )
 {
    echo '
            <form action="' . $_SERVER['REQUEST_URI'] . '" method="post">
            <label>Username</label>
            <input type="text" value="' .$user->user_login  . '"
            <input type="submit">
    ';    
 }
}

  • die Funktion myprefix_edit_user_cb() läuft nie, um dorthin zu gelangen. Ich habe die Frage bearbeitet.

    – Steve

    5. September 2017 um 11:28 Uhr

  • Nach meinem Code denke ich, dass Ihre Probleme gelöst werden müssen. hast du das gecheckt?

    – Akshay Shah

    5. September 2017 um 12:06 Uhr

  • Bitte überprüfe es jetzt

    – Akshay Shah

    5. September 2017 um 15:17 Uhr

  • @Steve, bitte überprüfen Sie die Antwort jetzt

    – Akshay Shah

    7. September 2017 um 9:55 Uhr

  • Es sieht so aus, als ob Sie nach dem suchen ->user_login Eigenschaft auf einem int?? Da ist ein $user = get_user_by( 'id', $user ); fehlt vor Ihrem Formular.

    – ptmalcolm

    8. September 2017 um 2:35 Uhr

Was Sie fragen, hängt davon ab, wo Sie dem Benutzer erlauben möchten, bearbeitet zu werden. Hier ist meine bevorzugte Option (vorausgesetzt, Sie tun alles auf der Vorderseite der Website):

Erstellen Sie eine Seite mit einer Seitenvorlage.

Standardmäßig werden die meisten Themen mit einigen grundlegenden Vorlagen für das Aussehen einer Seite geliefert. Da Sie vielleicht ein Bearbeitungsformular zu einer Seite hinzufügen möchten, wäre das Erstellen einer benutzerdefinierten Seitenvorlage ein einfacher Schritt. Ein gutes Tutorial zum Erstellen dieser kann gefunden werden hier. Nach der Erstellung würden Sie der Vorlage einen Code wie diesen hinzufügen:

<?php if (isset($_GET['user_id'])): ?>

    <?php $user = get_user_by('id', intval($_GET['user_id'])); ?>
    <form action="#" method="post">
        <label>Username</label>
        <input type="text" value="<?= esc_attr($selected_user->user_login); ?>" />
        <input type="submit" />
        ...
    </form>

<?php else: ?>

    <p>Error, please specify a user id!</p>

<?php endif; ?>

Was einen grundlegenden Test machen würde, um sicherzugehen Benutzeridentifikation an die Seite übergeben wurde, dann lade das Formular entsprechend (zur Verbesserung würde ich auch prüfen, ob get_user_by gibt ein Objekt zurück, bevor ein Bearbeitungsformular angezeigt wird, nur für den Fall, dass die user_id ungültig ist). Im bereitgestellten Beispiel würde eine URL (mit auf Seitenname gesetzten Permalinks) so aussehen:

https://example.com/edit-page/?user_id=55

Es gibt Möglichkeiten, die URL sauberer zu machen, aber im Moment versuche ich nur sicherzustellen, dass Ihre Frage mit einem korrekten Arbeitsbeispiel beantwortet wird.

Koda

1390410cookie-checkAufrufen einer Funktion beim Klicken auf eine Schaltfläche, Abrufen einer URL

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy