在数组中调用内爆变量的问题

时间:2018-05-08 作者:Jake Punton

我在调用一个内爆变量时遇到了问题,该变量随后被形成一个数组并在后循环参数中调用。

$user_id = um_profile_id(); // Get current user ID
                    $follow_ids = $wpdb->get_results( "SELECT meta_value FROM brilli_usermeta WHERE user_id = ".$user_id );
                    $array = array();
                    foreach( $follow_ids as $output ){
                        $array[] = $output->meta_value;
                    }
                    $following = implode(\',\', $array);
                    $return = array(print_r($following));
                    $args = array(
                        \'author__in\' => $return,
                    );
                    query_posts( $args );
                    while ( have_posts() ) : the_post();
                        echo \'<p>\' . get_the_title() . \'</p>\';
                    endwhile;
                    wp_reset_query();
这是它的输出:

enter image description here

这不会显示正确的帖子,并且会显示他们跟踪的人的ID。

我需要它通过存储在数组中的ID返回帖子。

1 个回复
SO网友:Tom J Nowell

这是您的问题:

$follow_ids = $wpdb->get_results( "SELECT meta_value FROM brilli_usermeta WHERE user_id = ".$user_id );
没有指定元键,这是一个原始SQL查询,这意味着返回所有用户元值,甚至是那些不相关的值。您需要指定密钥

但是,当缓存的API可用时,为什么还要为直接查询而烦恼呢?这样更容易使用、更安全、更快?

$follow_ids = get_user_meta( $user_id, \'follow_ids\', false );
foreach( $follow_ids as $id ) {
    // etc ...
}
在哪里\'follow_ids\' 将替换为用于存储追随者ID的元密钥

其他注意事项:

您应该使用分类术语或此非用户元,尤其是如果您想显示跟随某人的用户列表,请不要使用query_posts, 没有有效或充分的理由使用它。使用pre_get_posts 修改或替换主查询,或使用WP_Query 要添加新查询,请不要使用原始SQL从存储在WP表中的数据库中获取数据。有一些函数可以做到这一点,它们比您可以编写的任何SQL都快得多。更安全的是,您的查询没有转义或应用准备

结束

相关推荐

ARRAY_FILTER WARNING-wp-Includes/post.php第3148行

我插入the following code, 请参见下文,从前端提交帖子。提交时,会出现以下警告:警告:array\\u filter()要求参数1为数组,字符串在[…]中给出/wp包括/后。php在线3148我不知道警告来自哪里,哪个数组是字符串?function ty_front_end_form() { ?> <form id=\"custom-post-type\" name=\"custom-post-type\" method=\"post