带有变量的wordpress自定义查询

时间:2014-05-21 13:27:53

标签: 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"它的工作原理

1 个答案:

答案 0 :(得分:0)

得到了一些帮助。

    $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描述作者和照片网址。 它还检查最高数量的描述和照片网址,如果这些更新,它将获得最新的描述和照片网址。

还是谢谢你的帮助,对不起我的英语。