我目前正在为Wordpress数据库中的自定义表重新编制索引。我正在成功收集数据值,但是我正在努力收集所有$ wpdb-> terms。

某些帖子具有多个与之相关的术语,例如,我有一个自定义帖子类型(商店),在其中有一个自定义分类法(已售产品),在此自定义分类法中,我列出了4个术语(A术语,Term术语) B,C期,D期)。

我设法用Colomn“ post_terms”除外的所需信息填充新数据库,添加了第一个术语,但是我需要添加其他关联的术语(如果它们存在),以便单元格显示每个以逗号分隔的段-A,-B)。

            $sql = "";
            $sql .= "INSERT INTO $this->tablename (`post_id`, `post_type`, `post_terms`, `lat`, `lng`) ";
            $sql .= "SELECT * FROM (";
                $sql .= "
                    SELECT
                        `$wpdb->posts`.`ID` AS `post_id`,
                        `$wpdb->posts`.`post_type`,
                        `$wpdb->terms`.`slug` AS `post_terms`,
                        `lat_field`.`meta_value` AS `lat`,
                        `lng_field`.`meta_value` AS `lng`
                    FROM
                        `$wpdb->posts`
                        INNER JOIN $wpdb->term_relationships ON($wpdb->posts.ID = $wpdb->term_relationships.object_id)
                        INNER JOIN $wpdb->term_taxonomy ON($wpdb->term_relationships.term_taxonomy_id = $wpdb->term_taxonomy.term_taxonomy_id)
                        INNER JOIN $wpdb->terms ON($wpdb->term_taxonomy.term_id = $wpdb->terms.term_id)
                        LEFT JOIN `$wpdb->postmeta` AS `lat_field` ON (`$wpdb->posts`.`ID` = `lat_field`.`post_id` AND `lat_field`.`meta_key` IN ('".implode('\', \'',$this->keys['lat'])."'))
                        LEFT JOIN `$wpdb->postmeta` AS `lng_field` ON (`$wpdb->posts`.`ID` = `lng_field`.`post_id` AND `lng_field`.`meta_key` IN ('".implode('\', \'',$this->keys['lng'])."'))
                    WHERE `$wpdb->posts`.`post_status` = 'publish' AND (`lat_field`.`meta_value` IS NOT NULL OR `lng_field`.`meta_value` IS NOT NULL) AND " . $wpdb->term_taxonomy . ".taxonomy = 'products-sold'
                ";

            $sql .= ") AS `t`";
            $sql .= " ON DUPLICATE KEY UPDATE `lat` = VALUES(`lat`), `lng` = VALUES(`lng`)";
            $wpdb->query($sql);


这是我上面的工作代码,任何帮助将不胜感激。

最佳答案

长时间没有生气的答案了....

您将要:

GROUP_CONCAT(slug,',')

并添加GROUP BY post_id

这将显示所有串联的段,并以逗号分隔。
这些子弹将匹配并按post_id分组。每个结果中应该有一个不同的post_id实体。

关于php - 使用多个术语使用MYSQL重新索引Wordpress中的自定义表,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32292024/

10-13 08:22