Php Mysql自定义帖子类型
我正在为Php Mysql自定义帖子类型,php,mysql,wordpress,Php,Mysql,Wordpress,我正在为Wordpress插件使用WpDataTables。然而,这是一个通用的mySQL查询,在这一点之前,它工作正常 SELECT posts_apex_po.ID AS apex_po_ID, posts_apex_po.post_title AS apex_po_post_title, posts_apex_po_payment.ID AS apex_po_payment_ID, posts_apex_po_payment.post_title AS apex_po_payment_po
Wordpress插件使用WpDataTables。然而,这是一个通用的mySQL查询
,在这一点之前,它工作正常
SELECT posts_apex_po.ID AS apex_po_ID,
posts_apex_po.post_title AS apex_po_post_title,
posts_apex_po_payment.ID AS apex_po_payment_ID,
posts_apex_po_payment.post_title AS apex_po_payment_post_title
FROM wp_posts AS posts_apex_po, wp_posts AS posts_apex_po_payment
WHERE 1=1
AND posts_apex_po.post_status = 'publish'
AND posts_apex_po.post_type = 'apex_po'
AND posts_apex_po_payment.post_status = 'publish'
AND posts_apex_po_payment.post_type = 'apex_po_payment'
问题是,当我尝试获取apex\u po
或apex\u po\u payment
自定义帖子类型的帖子元数据时,它不起作用
apex\u po\u payment
有一个元键apex\u po\u meta.purchase\u order
,其值为apex\u po ID
因此基本上,Apex\u PO
是一个采购订单,当您使用Apex\u PO\u payment
创建付款时,您可以选择一个Apex\u PO ID
将其链接到
我试图显示链接的采购订单和采购订单付款
,但它不起作用。
有什么帮助吗?根据您提到的查询,您正试图获得同时具有两种帖子类型的帖子
AND posts_apex_po.post_type = 'apex_po'
AND posts_apex_po_payment.post_type = 'apex_po_payment'
一篇文章不可能同时有两种不同的文章类型,所以你应该或者介于两者之间。我在这里和那里进行了一些搜索并理解了mysql连接查询之后,就能够自己找到答案。我必须对同一个mysql表中的每个自定义post类型进行两个单独的查询,然后在我想要的字段上加入它们
为将来遇到相同问题的任何人发布答案
SELECT * FROM (
SELECT
posts_apex_po.ID AS apex_po_id,
posts_apex_po.post_title AS apex_po_post_title,
apex_po_meta_grand_total_tbl.meta_value AS apex_po_meta_grand_total,
FROM wp_posts AS posts_apex_po
INNER JOIN (SELECT apex_po_meta_grand_total_tbl_posts.ID as id, meta_value, meta_key FROM wp_postmeta AS apex_po_meta_grand_total_tbl_postmeta INNER JOIN wp_posts AS apex_po_meta_grand_total_tbl_posts ON apex_po_meta_grand_total_tbl_postmeta.post_id = apex_po_meta_grand_total_tbl_posts.ID AND apex_po_meta_grand_total_tbl_posts.post_type = 'apex_po') AS apex_po_meta_grand_total_tbl
ON apex_po_meta_grand_total_tbl.meta_key = 'grand_total' AND apex_po_meta_grand_total_tbl.id = posts_apex_po.ID
WHERE 1=1
AND posts_apex_po.post_status = 'publish'
AND posts_apex_po.post_type = 'apex_po' ) x
LEFT JOIN
( SELECT posts_apex_po_payment.post_date AS apex_po_payment_post_date,
posts_apex_po_payment.post_title AS apex_po_payment_post_title,
apex_po_payment_meta_amount_paid_tbl.meta_value AS apex_po_payment_meta_amount_paid,
apex_po_payment_meta_purchase_order_tbl.meta_value AS apex_po_payment_meta_purchase_order
FROM wp_posts AS posts_apex_po_payment
INNER JOIN (SELECT apex_po_payment_meta_amount_paid_tbl_posts.ID as id, meta_value, meta_key FROM wp_postmeta AS apex_po_payment_meta_amount_paid_tbl_postmeta INNER JOIN wp_posts AS apex_po_payment_meta_amount_paid_tbl_posts ON apex_po_payment_meta_amount_paid_tbl_postmeta.post_id = apex_po_payment_meta_amount_paid_tbl_posts.ID AND apex_po_payment_meta_amount_paid_tbl_posts.post_type = 'apex_po_payment') AS apex_po_payment_meta_amount_paid_tbl
ON apex_po_payment_meta_amount_paid_tbl.meta_key = 'amount_paid' AND apex_po_payment_meta_amount_paid_tbl.id = posts_apex_po_payment.ID
INNER JOIN (SELECT apex_po_payment_meta_purchase_order_tbl_posts.ID as id, meta_value, meta_key FROM wp_postmeta AS apex_po_payment_meta_purchase_order_tbl_postmeta INNER JOIN wp_posts AS apex_po_payment_meta_purchase_order_tbl_posts ON apex_po_payment_meta_purchase_order_tbl_postmeta.post_id = apex_po_payment_meta_purchase_order_tbl_posts.ID AND apex_po_payment_meta_purchase_order_tbl_posts.post_type = 'apex_po_payment') AS apex_po_payment_meta_purchase_order_tbl
ON apex_po_payment_meta_purchase_order_tbl.meta_key = 'purchase_order' AND apex_po_payment_meta_purchase_order_tbl.id = posts_apex_po_payment.ID
WHERE 1=1
AND posts_apex_po_payment.post_status = 'publish'
AND posts_apex_po_payment.post_type = 'apex_po_payment' ) y
ON y.apex_po_payment_meta_purchase_order = x.apex_po_id
那不是我目前的问题。当我运行这个查询时,我得到了结果,实际上我正在查询两个自定义的帖子类型,到目前为止,它工作得很好。只是当我使用元键将第一个自定义帖子类型链接到第二个自定义帖子类型时。。。它停止工作,而且我无法使用上述方法从任何自定义帖子类型中获取任何元键/元值。