WP 中 2 个自定义帖子之间的关系
Relationship between 2 custom posts in WP
我在名为 Company
和 Location
的 WP 中使用 "Pods - Custom Content Types and Fields" 插件创建了 2 个自定义 post 类型。此外,我在 Location
post 类型中创建了名为 parent_company_name
.
的关系字段
现在我正尝试通过此关系字段获取 posts。
我试过这段代码:
$pos = get_posts(
array(
'numberposts' => 1000,
'post_type' => 'location',
'meta_key' => 'parent_company_name',
'meta_value' => $full_company_name
)
);
但是它 returns 是一个空数组。
我知道对于 post 类型和分类法之间的关系,我可以做这样的事情:
$posts_array = get_posts(
array(
'numberposts' => 1000,
'post_type' => 'compan_name',
'tax_query' => array(
array(
'taxonomy' => 'type_of_compan',
'field' => 'slug',
'terms' => $company_slug,
)
)
)
);
但是我可以为 2 post 类型做些什么来获得相同的结果?
您正在使用插件 Pods - Custom Content Types and Fields, which have it's own logic, creates table in the database for Relationship named {your-db-prefix_}podsrel
and have a lot of related options。
您拥有的是 - 2 个自定义帖子类型(Company
和 Location
),它们的关系如下:Location
的 parent_company_name
是一些 Company
.
parent_company_name
保存在数据库中(在 {your-db-prefix_}postmeta
table 中)作为 meta_key
for Location
with id
of some Company
作为 meta_value
:
meta_id | post_id | meta_key | meta_value
----------+--------------+---------------------+----------------
some_id | some_post_id | parent_company_name | some_Company_id
并且在 {your-db-prefix_}podsrel
table 中与 id 的关系为:
我这边实现你的目标的 2 种方法:
您的 Company
没有 id
,只有名字(标题):
function ww_get_id_by_title($title, $post_type = 'company'){
$post = get_page_by_title($title, OBJECT, $post_type);
return (!empty($post)) ? $post->ID : false;
}
$pos = get_posts(
array(
'numberposts' => 1000,
'post_type' => 'location',
'meta_key' => 'parent_company_name',
'meta_value' => ww_get_id_by_title($full_company_name)
)
);
这里我们创建函数 ww_get_id_by_title
,它 return 是公司的 id
使用它的名称。我们使用 get_page_by_title()
函数来 return id。在我们刚刚使用 get_posts
.
之后
注意:这会比我们使用 Company
的 id
慢得多
你有公司的id
,对于我们的Location
来说是parent_company_name
:
$company_id = 9;
$pos = get_posts(
array(
'numberposts' => 1000,
'post_type' => 'location',
'meta_key' => 'parent_company_name',
'meta_value' => $company_id
)
);
本例中我们的 Company
id 为 9。
我在名为 Company
和 Location
的 WP 中使用 "Pods - Custom Content Types and Fields" 插件创建了 2 个自定义 post 类型。此外,我在 Location
post 类型中创建了名为 parent_company_name
.
现在我正尝试通过此关系字段获取 posts。
我试过这段代码:
$pos = get_posts(
array(
'numberposts' => 1000,
'post_type' => 'location',
'meta_key' => 'parent_company_name',
'meta_value' => $full_company_name
)
);
但是它 returns 是一个空数组。
我知道对于 post 类型和分类法之间的关系,我可以做这样的事情:
$posts_array = get_posts(
array(
'numberposts' => 1000,
'post_type' => 'compan_name',
'tax_query' => array(
array(
'taxonomy' => 'type_of_compan',
'field' => 'slug',
'terms' => $company_slug,
)
)
)
);
但是我可以为 2 post 类型做些什么来获得相同的结果?
您正在使用插件 Pods - Custom Content Types and Fields, which have it's own logic, creates table in the database for Relationship named {your-db-prefix_}podsrel
and have a lot of related options。
您拥有的是 - 2 个自定义帖子类型(Company
和 Location
),它们的关系如下:Location
的 parent_company_name
是一些 Company
.
parent_company_name
保存在数据库中(在 {your-db-prefix_}postmeta
table 中)作为 meta_key
for Location
with id
of some Company
作为 meta_value
:
meta_id | post_id | meta_key | meta_value
----------+--------------+---------------------+----------------
some_id | some_post_id | parent_company_name | some_Company_id
并且在 {your-db-prefix_}podsrel
table 中与 id 的关系为:
我这边实现你的目标的 2 种方法:
您的
Company
没有id
,只有名字(标题):function ww_get_id_by_title($title, $post_type = 'company'){ $post = get_page_by_title($title, OBJECT, $post_type); return (!empty($post)) ? $post->ID : false; } $pos = get_posts( array( 'numberposts' => 1000, 'post_type' => 'location', 'meta_key' => 'parent_company_name', 'meta_value' => ww_get_id_by_title($full_company_name) ) );
这里我们创建函数
之后ww_get_id_by_title
,它 return 是公司的id
使用它的名称。我们使用get_page_by_title()
函数来 return id。在我们刚刚使用get_posts
.注意:这会比我们使用 Company
的 你有公司的
id
,对于我们的Location
来说是parent_company_name
:$company_id = 9; $pos = get_posts( array( 'numberposts' => 1000, 'post_type' => 'location', 'meta_key' => 'parent_company_name', 'meta_value' => $company_id ) );
本例中我们的
Company
id 为 9。
id
慢得多