[英]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.