Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Wordpress用户元管理_Wordpress_Meta - Fatal编程技术网

Wordpress用户元管理

Wordpress用户元管理,wordpress,meta,Wordpress,Meta,我开始开发一个有5000名用户的WorpAddress门户。每个用户将拥有cca 20元值(如街道、城市等) 我需要对用户元数据进行分页/排序,我想知道最有效的方法是什么 Wordpress通常将每个元存储在usermeta表中,因此我可以: 1) 多次加入users和usermeta表,获取所有元数据,并直接在MYSQL查询中排序 2) 使用get_用户(数组('fields'=>'all_with_meta'))和此处描述的自定义排序功能 3) 创建自定义元表以存储值-如下所述 最好的方法是

我开始开发一个有5000名用户的WorpAddress门户。每个用户将拥有cca 20元值(如街道、城市等)

我需要对用户元数据进行分页/排序,我想知道最有效的方法是什么

Wordpress通常将每个元存储在usermeta表中,因此我可以:

1)
多次加入users和usermeta表
,获取所有元数据,并直接在MYSQL查询中排序

2) 使用
get_用户(数组('fields'=>'all_with_meta'))和此处描述的自定义排序功能

3) 创建
自定义元表
以存储值-如下所述

最好的方法是什么?或者在Wordpress中有没有其他方法来处理用户及其元数据?

我昨天有一个系统,该系统可以搜索特定的Posteta字段中的关键字

如果任何字段包含搜索词,上面链接上的答案将返回帖子

但是,下面的改进版本返回找到的关键字数量(在0到#个关键字之间,而不是每个字段中找到的实际关键字数量)

仅供参考,Post meta和user meta表基本上是一样的,这应该适合您。您可能可以使用wordpress查询对象来设置它,但是我的代码是自定义SQL,因为它是wordpress之外的独立脚本

SELECT *

FROM (
  SELECT
    post.ID as post_id,

    ( IF ( (
      post.post_title LIKE '%c++%'
      OR post.post_content LIKE '%c++%'
      OR meta_field_a.meta_value LIKE '%c++%'
      OR meta_field_b.meta_value LIKE '%c++%'
   ), 1, 0 )
    + IF ( (
      post.post_title LIKE '%java%'
      OR post.post_content LIKE '%java%'
      OR meta_field_a.meta_value LIKE '%java%'
      OR meta_field_b.meta_value LIKE '%java%'
   ), 1, 0 ) ) AS occurrences

  FROM wp_posts post

  JOIN wp_postmeta meta_field_a ON ( meta_field_a.post_id = post.ID AND meta_field_a.meta_key = 'field_a' )
  JOIN wp_postmeta meta_field_b ON ( meta_field_b.post_id = post.ID AND meta_field_b.meta_key = 'field_b' )

  WHERE post.ID IN (212, 213, 214)

  GROUP BY post.ID
) AS results

WHERE results.occurrences > 0
“IF”语句块正在检查关键字,如果在任何字段中找到或未找到关键字,则返回1或0。这将被添加到一起以生成“引用”,每行返回一次

“JOIN”语句块按键名拉入单个元。每个元密钥都需要自己的连接,但显然这不是一个昂贵的操作

“WHERE”语句将筛选器限制为指定的post ID。它们来自一个外部函数,但您可以用自己的where语句替换它,以手动检查post类型/状态。但是,由于您与用户打交道,您可能根本不想看到其中的WHERE(或者您想检查其他用户元,例如role)