php - 允许 $wpdb mysql 查询处理特定的 WordPress 类别

标签 php mysql wordpress

我编写了以下 mysql 查询,允许用包含特定单词组合的单元格内容填充 php 数组,同时跳过所有其他单元格:

$variable = "value";
$query = $wpdb->get_results("
    SELECT post_content
    FROM wp_posts
    WHERE post_content
    REGEXP '>(.*) $variable (.*)<'
");

它成功地履行了它的 promise ,除非我想通过特定的 WordPress 类别或一组 WordPress 类别来限制它的义务。

此时我只是不知道如何修改我的查询以满足我的需要。

有大量仅对特定 WordPress 类别执行 mysql 查询的工作示例,但一旦我添加 REGEXP '>(.*) $variable (.*)<',它们都立即无法填充数组。给他们。

我真的会用 $array = array('s' => $value, 'cat' => ID, 'posts_per_page' => -1);或者类似的东西如果 's'不会使用 mysql 的 LIKE在我的案例中会产生不可预测结果的语句。

请帮我修改查询。

如果您要帮助我解决这个问题,我会额外感谢您,以防您觉得对我的查询的每个更改或添加进行评论很无聊,就在您添加的代码附近。得到现成的结果总是很棒,但我想学习并防止自己在每次遇到类似问题时一次又一次地问同样的问题。

最佳答案

经过一些研究,我最终得到了这个可行的解决方案:

$variable = "value";
$query = $wpdb->get_results("
    SELECT ID, post_content
    FROM $wpdb->posts p
        JOIN $wpdb->term_relationships tr ON (p.ID = tr.object_id)
        JOIN $wpdb->term_taxonomy tt ON (tr.term_taxonomy_id = tt.term_taxonomy_id)
        JOIN $wpdb->terms t ON (tt.term_id = t.term_id)
        WHERE post_content REGEXP '>(.*) $variable (.*)<'
        AND tt.taxonomy = 'category'
        AND t.term_id = '###'
");

查询的最后一行是我应该用所需的 WordPress 类别 ID 号替换 ### 的地方。

关于php - 允许 $wpdb mysql 查询处理特定的 WordPress 类别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42204977/

相关文章:

mysql - 如何重命名 Amazon RDS 托管的 MySQL 数据库实例

mysql - ORDER BY CASE 子句在以下代码中如何工作?

php - 测量整数的长度(当解释为八进制数时)

php - 在 PHP 脚本中在哪里存储 MySQL 凭据?

python - web.py select 不返回结果,但该列表的长度确实返回(sql promt 中的手动查询也返回结果)

php - MySQL 查询 WordPress 日事件

html - Bootstrap 导航菜单固定底部

css - 重力形式的响应按钮

php - token 中的段数错误 (OAuth Google Api)

php - Laravel 5.4 迁移 :generate fails with Way\Generators\Filesystem\FileNotFound error