簡體   English   中英

在按鈕單擊上調用函數,獲取URL

[英]Calling a function on button click, getting a url

我是wordpress的新手。 我試圖在用戶點擊編輯后調用函數myprefix_edit_user_cb()來獲取編輯表單。

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>';
    }   
}

功能:

 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">
        ';
}

據我說,你需要在你的編輯網址上添加一些請求標記。

請嘗試以下代碼。

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>';
 }   
}

帶有動作和帶標志的回調函數:

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">
    ';    
 }
}

您要問的全部取決於您希望允許用戶編輯的位置。 這是我的首選(假設你正在網站正面做一切):

使用頁面模板創建頁面。

默認情況下,大多數主題都附帶了一些頁面外觀的基本模板。 看到您可能希望向頁面添加編輯表單,創建自定義頁面模板將是一個直接的舉措。 可以在此處找到創建這些的好教程。 創建后,您可以將以下代碼添加到模板中:

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

哪個會做一個基本測試,以確保user_id已傳遞到頁面,然后相應地加載表單(為了改進這一點,我還將檢查get_user_by是否在顯示編輯表單之前返回一個對象,只是在user_id是的情況下無效)。 在提供的示例中,URL(永久鏈接設置為頁面名稱)如下所示:

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

有一些方法可以使URL更清晰,但是現在我只是想確保用正確的工作示例來回答你的問題。

幸田來未

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM