首先,请注意:
短代码确实接受参数,因此您可以编写[标记主题=“生物学”](@参见https://codex.wordpress.org/Shortcode_API)永远不要将原始数据直接传递到SQL语句中,Wordpress使用PDO,这意味着您可以准备语句。(@参见https://developer.wordpress.org/reference/classes/wpdb/prepare/)使用get\\u结果将返回数组、对象或null(@请参阅https://developer.wordpress.org/reference/classes/wpdb/get_results/). 这里有很多方法。您可以选择$wpdb->;get\\u var(),以获取单个值。或$wpdb->;get\\u results()在一个查询中获取这两个结果。我认为我们缺少一些数据,如果您只想为一个用户指定一行,还可以使用$wpdb->;get\\u row()。假设数据库是Excel工作表。如果需要多个行和列,则需要使用$wpdb->;get\\u results()。如果只需要一行,可以使用$wpdb->;get\\u row()。如果只需要一列数据$wpdb->;get\\u column()。如果只需要一个特定单元格$wpdb->;get\\u var()如果你只想使用一个;复选标记“;或一些“;感叹号“;根据不及格或通过特定分数进行评分。一个不错的免费图标库(@请参阅https://fontawesome.com/)
代码基于您给定的问题,尽管我认为您在查询中缺少了WHERE语句,无法根据自己的项目获取特定人员的“标记”。
add_shortcode( "marks", function( $atts ) {
//= defaults
$args = shortcode_atts( array(
\'subject\' => \'biology\',
), $atts );
//= database query
global $wpdb;
$query = $wpdb->prepare( "SELECT prev, current FROM grade WHERE sub = %s", $args[\'subject\'] );
$result = $wpdb->get_row( $query );
//= bail when no result
if( is_null( $result ) ) return;
//= conditional
if( $result[ \'prev\' ] < $result[ \'current\' ] ) {
echo "<p color=\\"color: green;\\">{$result[\'current\']}<i class=\\"far fa-check\\"></i></p>";
} else {
echo "<p color=\\"color: red;\\">{$result[\'current\']}<i class=\\"far fa-times\\"></i></p>";
}
} );
如果需要,您可以使用以下代码在屏幕上轻松调试对象和数组:
echo var_export( $array, true );
希望这有帮助!