在按钮单击上调用函数,获取URL

时间:2017-09-01 03:58:15

标签: php wordpress wordpress-hook

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

2 个答案:

答案 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

有一些方法可以让网址更加清晰,但是现在我只是想确保用正确的工作示例来回答你的问题。