单击链接时向数据库中的用户元表添加字段

时间:2014-05-07 作者:TietjeDK

我正在开发一个功能,可以让我网站上的注册用户将帖子添加到书签中。我已经搜索了插件,但似乎没有一个插件能正常工作。

我有一个页面,用户可以在其中查看自己的信息,如姓名、电子邮件、密码等。我想要一个他们已添加书签的帖子列表。这应该通过单击帖子中的链接来完成,然后将url或指向帖子的链接保存在数据库中。

获取帖子url的代码:

function curPageURL() {
$pageURL = \'http\';
 if ($_SERVER["HTTPS"] == "on") {$pageURL .= "s";}
  $pageURL .= "://";
 if ($_SERVER["SERVER_PORT"] != "80") {
 $pageURL .=     
 $_SERVER["SERVER_NAME"].":".$_SERVER["SERVER_PORT"].$_SERVER["REQUEST_URI"];
 } else {
  $pageURL .= $_SERVER["SERVER_NAME"].$_SERVER["REQUEST_URI"];
 }
 return $pageURL;
 }
现在我在变量中有了url。但是,如何将此url存储在当前用户的字段中?

我正在考虑在用户表中插入一个字段。但我不太确定这是如何以及是否是最好的方式。

1 个回复
最合适的回答,由SO网友:TheDeadMedic 整理而成

就个人而言,我会存储帖子ID(而不是URL)。类似于:

function wpse_143643_add_user_bookmark() {
    if ( ! empty( $_GET[\'bookmark\'] ) && is_singular() && is_user_logged_in() ) {
        if ( ! $bookmarks = get_user_meta( $user_id = get_current_user_id(), \'bookmarks\', true ) )
            $bookmarks = array();

        $bookmarks[] = get_queried_object_id();
        $bookmarks = array_unique( $bookmarks );

        update_user_meta( $user_id, \'bookmarks\', $bookmarks );
    }
}

add_action( \'template_redirect\', \'wpse_143643_add_user_bookmark\' );
这样的链接http://example.com/my-post/?bookmark=true 将添加my-post 到当前用户的书签。

并显示书签列表:

if ( $bookmarks = get_user_meta( $user_id = get_current_user_id(), \'bookmarks\', true ) ) {
    $posts = get_posts(
        array(
            \'post__in\' => $bookmarks,
        )   
    );

    $list = \'<ul class="bookmarks">\';
    foreach ( $posts as $_post )
        $list .= \'<li><a href="\' . get_permalink( $_post->ID ) . \'">\' . get_the_title( $_post->ID ) . \'</a></li>\';
    $list .= \'</ul>\';

    echo $list;
}

结束

相关推荐

Pre_Get_Posts税查询不适用于自定义作者页面

我正在使用主题Twenty12,并修改了文件作者中的标准post查询。php,代码如下:function wpd_author_query( $query ) { //CODE to set $current_user_name here //This gets the author from the URL $author = get_user_by(\'slug\',get_query_var(\'author_name\')); $current_user_name