WP中2个自定义帖子之间的关系

时间:2018-04-27 19:13:05

标签: php wordpress relationship custom-post-type custom-fields

我创建了2个自定义帖子类型,其中包含名为CompanyLocation的WP中的“广告系列 - 自定义内容类型和字段”插件。此外,我在名为Location的{​​{1}}帖子类型中创建了关系字段。

现在我正试图通过这个关系领域获得帖子。

我试过这段代码:

parent_company_name

然而它返回一个空数组。

我知道对于帖子类型和分类法之间的关系,我可以做这样的事情:

$pos = get_posts(
    array(
        'numberposts' => 1000,
        'post_type' => 'location',
        'meta_key' => 'parent_company_name',
        'meta_value' => $full_company_name
    )
);

但是我可以为2种帖子类型做些什么来获得相同的结果呢?

1 个答案:

答案 0 :(得分:2)

您正在使用具有自己逻辑的插件Pods - Custom Content Types and Fields,在数据库中为名为{your-db-prefix_}podsrel的关系创建表,并且有很多related options

您拥有的是2个自定义帖子类型(CompanyLocation),其中包括:Location的{​​{1}} parent_company_nameCompany

parent_company_name保存在数据库中(在{your-db-prefix_}postmeta表格中)meta_key Location id Companymeta_value meta_id | post_id | meta_key | meta_value ----------+--------------+---------------------+---------------- some_id | some_post_id | parent_company_name | some_Company_id 1}}:

{your-db-prefix_}podsrel

id表中,id为关系:

enter image description here

两种方式来实现你的目标:

  1. 您没有Company的{​​{1}},只有它的名字(标题):

    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,它使用它的名称返回公司的id。我们使用get_page_by_title()函数来返回id。我们刚刚使用get_posts

    注意:如果我们拥有公司的id

  2. ,这将会慢得多
  3. 您拥有id公司,我parent_company_nameLocation

    $company_id = 9;
    
    $pos = get_posts(
        array(
            'numberposts' => 1000,
            'post_type' => 'location',
            'meta_key' => 'parent_company_name',
            'meta_value' => $company_id
        )
    );
    

    在此示例中,我们的Company ID为9。

  4. 提供的方法只是一个基本方法。您可以使用WP_Query,使用SQL查询等处理$wpdb