从大量书签中查询用户书签

时间:2013-02-22 作者:Feliz9

我正在尝试访问由单个用户创建的书签。该键存储在links表的link\\u owner属性中。

然而,get\\u bookmarks()似乎加载了整个表,剩下的就是解析表并用匹配的userid过滤行。

对于我的应用程序,我希望链接的数量相当大(超过10000个)。我是不是老生常谈,担心这个用例会让事情变得更慢?还有什么其他方法可以更有效地做到这一点?WP\\U查询似乎只适用于帖子。或者我应该立即使用SQL吗?

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

看起来是默认值get_bookmarks()

http://codex.wordpress.org/Function_Reference/get_bookmarks

正在使用此查询:

SELECT * FROM wp_links  WHERE 1=1 AND link_visible = \'Y\' ORDER BY link_name ASC;
您可以在中检查功能/wp-includes/bookmark.php.

这个get_bookmarks() 函数具有limitorder 您可能会发现有用的参数。

选项get_bookmarks("limit=5")

提供此查询:

SELECT * FROM wp_links  WHERE 1=1 AND link_visible = \'Y\' ORDER BY link_name ASC LIMIT 5
类别参数get_bookmarks("category=1") 给你这个JOIN:

SELECT * FROM wp_links  
INNER JOIN wp_term_relationships AS tr ON (wp_links.link_id = tr.object_id) 
INNER JOIN wp_term_taxonomy as tt ON tt.term_taxonomy_id = tr.term_taxonomy_id 
WHERE 1=1 AND link_visible = \'Y\'  AND ( tt.term_id = 1 ) AND taxonomy = \'link_category\'       
ORDER BY link_name ASC;
因此,如果不使用类别参数,这些参数很简单SELECT 使用$wpdb 数据库对象。

Edit: 如果要搜索特殊link_owner 您可以使用以下示例:

global $wpdb;
$link_owner=1; // EDIT this value
$sql="SELECT * FROM wp_links  WHERE link_visible = \'Y\' AND link_owner = %d ORDER BY link_name ASC;";
$results = $wpdb->get_results($wpdb->prepare($sql,$link_owner));

SO网友:Mark Kaplun

书签在3.5中被轻描淡写地弃用,因此再使用它们可能不是很明智。官方的替代品是菜单,但它们的UI不适合处理与一个菜单关联的多个链接。

如果您不需要管理UI(或有自己的),您可以使用菜单,它们基本上是CPT,不可公开查询,您可以使用菜单API或wp\\U查询API

如果您确实需要管理员访问选项,只需使用您自己的CPT,并使用WP\\u query检索帖子/链接。

结束

相关推荐

MySQL上的WPMU限制为1 GB空间?

我的MySQL数据库限制为每1个数据库1024MB,但WPMU网站需要超过这一限制。。。有没有办法让WPMU去使用database_2 什么时候database_1 已接近1024MB?我可以:database_1 1024MBdatabase_2 1024MBdatabase_3 1024MBdatabase_4 1024MB等。我不能有:database_1 8192MB或更多