【问题标题】:Wordpress Pods: Find on Boolean FieldWordpress Pods:在布尔字段上查找
【发布时间】:2013-03-23 06:14:24
【问题描述】:

我有一个简单的 pod,它带有一个名为 features 的布尔值。我正在尝试使用find() 方法(使用pods() 快捷方式)列出所有在页面模板上将特色布尔值设置为true 的pod 条目,但我无法让它工作。我找到了this answer,但它适用于旧版本,似乎不适用于 Pods 2.0。如果有更简单的方法可以做到这一点,请告诉我我正在尝试这样的事情:

$params = array(
    'orderby' => 'date DESC',
    'where' => 'case_study.has_page = 1',
    'limit' => -1
);
$pods = pods( 'case-study', $params );

我收到的错误是:

WordPress database error: [Unknown column 'case_study.has_page' in 'where clause']
SELECT DISTINCT 't'.* FROM 'wp_posts' AS 't' LEFT JOIN 'wp_postmeta' AS 'case_study' ON 'case_study'.'meta_key' = 'case_study' AND 'case_study'.'post_id' = 't'.'id' WHERE 'case_study'.'has_page' = 1 AND 't'.'post_type' = "case_study" ORDER BY 't'.'date' DESC, 't'.'menu_order', 't'.'post_title', 't'.'post_date'

Database Error; SQL: SELECT DISTINCT 't'.* FROM 'wp_posts' AS 't' LEFT JOIN 'wp_postmeta' AS 'case_study' ON 'case_study'.'meta_key' = 'case_study' AND 'case_study'.'post_id' = 't'.'id' WHERE 'case_study'.'has_page' = 1 AND 't'.'post_type' = "case_study" ORDER BY 't'.'date' DESC, 't'.'menu_order', 't'.'post_title', 't'.'post_date'; Response: Unknown column 'case_study.has_page' in 'where clause'

似乎它没有正确地加入wp_postmeta,但我不太清楚如何使用查找参数来做到这一点。除了其他问题,它应该是'case_study'.'meta_key'='has_page'。我尝试使用是/否选项使该字段成为简单的关系,但仍然没有运气。

感谢您提供的任何帮助!非常感谢。

【问题讨论】:

  • 你在 Pods 2.3 中试过了吗? pods.io/latestpods.io/github
  • 似乎没有什么不同。作为参考,我的 pod 名称是“case_study”,布尔/关系字段称为“has_page”。有谁知道如何在查找调用中使用简单(自定义)关系字段?谢谢!

标签: mysql wordpress podscms


【解决方案1】:

如果您的关系字段名为“has_page”并且它是一个简单的(自定义),那么您将希望使用它:

has_field.meta_value = 1

【讨论】:

  • 虽然错误消失了,但运气不好。现在我没有得到任何结果。我也试过'has_page_field',以防你打错了,但还是一样。我可以在我的wp_postmeta 表中看到这样的条目:meta_id : 2323, post_id : 4202, meta_key : has_page, meta_value : 1
  • 在我不知情的情况下,find 中的 where 参数可能正在尝试为关系寻找单独的表,即使它是一个简单的字段。我将尝试阅读该字段。
  • 也许是因为一切都存储在元数据中?如果我用它自己的表制作一个新的 pod,我认为可能会这样做。
【解决方案2】:

找到了!编辑 pod 时,我转到“高级”设置选项卡,在“功能类型”下,我从“帖子”将其设置为“自定义”。瞧,它现在可以工作了!我想这个设置告诉find 调用如何对表进行操作。我最终找到的参数如下:

$params = array(
    'orderby' => 'date DESC',
    'where' => 'has_page.meta_value = 1',
    'limit'   => -1
);
$casestudies = pods( 'case_study', $params );

非常感谢 Scott 的快速帮助!

【讨论】:

  • 啊,废话,但是当你这样做时,这意味着你必须手动绑定正常的元操作,如写作、编辑等,如图所示here...
  • 即使切换到自定义功能,我仍然会收到错误,未知列 item_product_type.meta_value :(
【解决方案3】:

最终解决方案:

我的原始内容类型是 post 的扩展,它似乎不能很好地与关系字段(至少是基本字段)配合使用,因为它似乎假设它们会生成自己的表,但它们并不总是这样做。在这种情况下,由于它是一个简单的自定义关系,因此数据全部存储在 wp_postmeta 表中。

我找到的最佳解决方案是将我的 pod 重建为高级内容类型。这样,Pod 就可以自己生成一个表,因此可以使用简单的'where' => 'has_page' = 1 来检查布尔值,而不是所有的关系复杂性。感谢斯科特的所有帮助。

【讨论】:

    猜你喜欢
    • 2020-03-04
    • 1970-01-01
    • 2019-01-20
    • 2019-09-03
    • 1970-01-01
    • 2016-08-26
    • 2013-03-22
    • 1970-01-01
    • 2021-11-23
    相关资源
    最近更新 更多