我对扩展wordpress还很陌生,并尝试使用Mysql和PHP将数据提取到html表中并将其打印到wp页面上。到目前为止,我所做的是通过匹配表wp\\U testing\\u data中的score和max\\u score列的结果,获取所有表单数据以显示通过或失败
这是一个棘手的部分,我无法找到如何进行查询的任何细节。如果当前用户访问带有html表输出的页面,我希望它只显示来自其他用户的条目,这些用户在wp\\u usermeta表中与当前用户具有相同的site\\u id
理论上,查看页面的用户在DE49的wp\\u usermeta表中有一个site\\u id条目。现在,我只想在结果来自其他用户且site\\u id值等于当前用户site\\u id值时显示“通过”或“失败”结果表。site\\u id对于一组用户来说是唯一的,因此将实际结果(DE49)作为目标并不是答案。对于当时查看页面的用户(当前用户),它需要是动态的。基本上,您只能看到自己组成员的结果。在这种情况下,组存储在wp\\u usermeta表的site\\u id列中。我可以使用下面的方法获得所有结果,但无法确定只从与当前用户具有匹配元值的用户那里获得结果。是否有人知道如何编写查询,将上述条件添加到我在下面使用的查询中,以仅获取过滤后的数据?
global $wpdb;
$result = $wpdb->get_results( "SELECT f_name, l_name, date, IF(score = max_score, \'PASSED\',\'FAILED\') AS score
FROM wp_testing_data, wp_usermeta
WHERE wp_usermeta.meta_key = \'site_id\'
AND wp_usermeta.meta_value = \'DE49\'");
echo "<style>";
echo "body {font-family: Arial;}";
echo ".table_container { padding: 10px 12px 0px 12px; border: 1px solid #ccc; }";
echo ".table_container th { background-color:lightblue; color:#000; font-weight:bold; border-left: 1px solid white;}";
echo "</style></head>";
echo "<body>";
echo "<div class=\\"table_container\\"><table>";
echo "<tr><th style=\\"padding-left:10px;\\">First Name</th><th>Last Name</th><th>Date</th><th>Score</th></tr>";
foreach ($result as $row) {
echo "<tr><td>" . $row->f_name. "</td><td>" . $row->l_name . "</td><td>" . $row->date . "</td><td>" . $row->score. "</tr>";
}
echo "</table></div>";
如果您有任何指导或粗略的想法,我们将不胜感激,并感谢您抽出时间阅读我的帖子。
最合适的回答,由SO网友:Patriot 整理而成
您可以使用get_current_user_id 获取当前查看页面的用户的id,以及get_user_meta 获取与该用户关联的site\\u id。例如:
<?php
$user_id = get_current_user_id();
$site_id = get_user_meta($user_id, \'site_id\', true);
注意:这确实假设有用户登录,如果没有,您可能会得到意外的结果。因此,假设您还没有这样做,请确保该页面只能由登录的用户查看。
要使用此site\\u id获取每个“site”的分数,可以使用LEFT JOIN. 您可以使用的查询是:
$result = $wpdb->get_results("SELECT f_name, l_name, IF(tdata.score = tdata.maxscore, \'PASSED\', \'FAILED\') as score FROM wp_usermeta umeta LEFT JOIN wp_testing_data tdata ON tdata.user_id = umeta.user_id WHERE umeta.meta_key = \'site_id\' AND umeta.meta_value = \'" . $site_id . "\'");
请注意,这将为具有与$site\\u id相关联的site\\u id的每个用户提供查询结果,即使wp\\u testing\\u数据中没有相应的结果。如果您只想要那些有测试数据的,请使用内部连接而不是左连接。