php - funcion - Llamar a una función al hacer clic en el botón, obtener una URL
llamar funcion php desde html button (2)
Soy nuevo en wordpress. Estoy intentando llamar a la función myprefix_edit_user_cb()
para obtener el formulario de edición después de que el usuario haga clic en editar.
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>'';
}
}
con la función:
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">
'';
}
Lo que está preguntando todo depende de dónde le gustaría permitir que el usuario sea editado. Esta es mi opción preferida (suponiendo que esté haciendo todo en el anverso del sitio web):
Crea una página con una plantilla de página.
Por defecto, la mayoría de los temas vienen con algunas plantillas básicas de cómo se verá una página. Al considerar que es posible que desee agregar un formulario de edición a una página, la creación de una plantilla de página personalizada sería un movimiento directo. Un buen tutorial para crear estos se puede encontrar aquí . Una vez creado, agregaría un código como este a la plantilla:
<?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; ?>
Lo cual haría una prueba básica para asegurarse de que user_id haya sido transferido a la página, luego cargue el formulario en consecuencia (para mejorar esto también verificaría si get_user_by
devuelve un objeto antes de mostrar un formulario de edición en caso de que el user_id sea inválido). En el ejemplo proporcionado, una URL (con enlaces permanentes configurados para el nombre de la página) se vería así:
https://example.com/edit-page/ ? user_id = 55
Hay formas de hacer que la URL sea más limpia, sin embargo, por ahora solo intento asegurarme de que tu pregunta sea respondida con un ejemplo de trabajo correcto.
Koda
Según yo, necesitas poner un indicador de solicitud con tu URL de edición.
Pruebe el siguiente código.
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>'';
}
}
con acción y función de devolución de llamada con indicador:
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">
'';
}
}