我是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">
';
}
答案 0 :(得分:3)
根据我的说法,您需要在编辑网址上添加一些请求标记。
尝试以下代码。
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">
';
}
}
答案 1 :(得分:3)
您要求的全部取决于您希望允许用户编辑的位置。这是我的首选(假设你正在网站正面做一切):
默认情况下,大多数主题都附带了一些页面外观的基本模板。看到您可能希望向页面添加编辑表单,创建自定义页面模板将是一个直接的举措。可以找到创建这些内容的好教程here。创建后,您将向模板添加一些这样的代码:
<?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
有一些方法可以让网址更加清晰,但是现在我只是想确保用正确的工作示例来回答你的问题。
幸