php - 带变量的 WordPress 自定义查询

标签 php mysql sql wordpress variables

我正在尝试在 WordPress 中创建一个显示 2 位作者的自定义页面。
我有一个自定义查询,因为我需要显示作者图像和简介。 我的查询现在是这样的:

    <?php 

        global $wpdb;

        $authors = $wpdb->get_results("SELECT ID, user_nicename, meta_value, meta_key, display_name 
                                            FROM $wpdb->users, $wpdb->usermeta 
                                            WHERE user_nicename = 'nick' AND umeta_id = 53");

        foreach($authors as $author) {
            ?>
            <div class="author">
                <div class="authorimage" style="background-image: url('<?php echo $author->meta_value; ?>');" >
                </div>
                <div class="authorinfo">
                    <?php
                    $username = $author->user_nicename;
                    echo $author->display_name; ?><br /><?php
                        $bios = $wpdb->get_results("SELECT ID, user_nicename, meta_value, meta_key, display_name 
                                                        FROM $wpdb->users, $wpdb->usermeta 
                                                        WHERE user_nicename = %d
                                                        AND umeta_id = 43", $username);

                    foreach($bios as $bio) {    
                        echo $bio->meta_value;
                    }
                    ?>
                </div>
            </div>
    <?php
        }
    ?>

我使用了 2 个查询,因为我无法弄清楚如何在一个结果中获取 2 个元值。
一切都很好,但在第二个查询中 WHERE user_nicename= %d 不起作用。
它在 echo $bio->metavalue 中不显示任何内容。
但如果我硬编码 WHERE user_nicename = "andre" 它就可以工作

最佳答案

在一些帮助下让它工作。

    $users = "('nick', 'roy')";
    global $wpdb;
        $tableB2 = "SELECT user_id, max(umeta_id) maxid
                        FROM  art_usermeta b
                        WHERE meta_key = 'author_profile_picture'
                        GROUP BY user_id";

        $tableB1 = "SELECT a.user_id, maxid, meta_value, meta_key
                        FROM ($tableB2) a 
                        INNER JOIN art_usermeta b on b.user_id=a.user_id and b.umeta_id=maxid and meta_key='author_profile_picture'";

        $tableC2 = "SELECT user_id, max(umeta_id) maxid
                        FROM  art_usermeta b
                        WHERE meta_key = 'description'
                        GROUP BY user_id";

        $tableC1 = "SELECT a.user_id, maxid, meta_value, meta_key
                        FROM ($tableC2) a 
                        INNER JOIN art_usermeta c on c.user_id=c.user_id and c.umeta_id=maxid and meta_key='description'";

        $sql     = "SELECT ID, user_nicename, b.meta_value bvalue, b.meta_key bkey, display_name, c.meta_value cvalue, c.meta_key ckey
                        FROM art_users a
                        INNER JOIN ($tableB1) b  ON b.user_id=id AND b.meta_key = 'author_profile_picture'
                        INNER JOIN ($tableC1) c ON c.user_id=id AND c.meta_key = 'description'
                        WHERE user_nicename in $users";

此查询返回 user_nicename 的描述,display_name 作者的描述和照片 url。 它还会检查最多数量的描述和照片网址,如果这些内容得到更新,它将获得最新的。

仍然感谢您的帮助,并对我的英语感到抱歉。

关于php - 带变量的 WordPress 自定义查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23784648/

相关文章:

php - 在帐单地址中显示自定义字段

mysql - 使用存储过程插入和更新

MySQL选择性GROUP BY,使用最大值

mysql - 通过终端将 sql 文件导入数据库。有没有办法为 "ERROR 1366 at line ***: Incorrect integer value: ' 设置默认值?

sql - 如何使用 DB2 限制 DELETE 中的行数?

javascript - 如何在javascript中获取带有ID的选中复选框值

php - 数据表不显示 Json 检索的数据

php - 如何告诉 Git 我正在升级 php?

php - 如何将n个表单中的n个值保存到数据库中

php - 从 MYSQL 中选择几行