删除一篇帖子时,请删除所有相关帖子

时间:2019-02-01 14:55:33

标签: php wordpress function hook

我有以下概念:

我有,每个柱是在前端创建时间保存当前段塞的自定义字段一个前端的形式。如下所示:

发布1具有蛞蝓= “1234”

当我在slug 1234处于Post 1时,我可以使用嵌入表单创建Post 2,并且“ 1234”将保存在Post 2的自定义字段“ custum-id-1”中。

删除我想目前的蛞蝓的职位之一,现在当删除帖子和搜索如果有另一篇文章中有蛞蝓作为定制ID-1的字段值的名称,并删除它们。这意味着,如果删除了Post 1234,则Post 2也应被删除,因为Post 2的custom-id-1已保存了Post One的子名称。

我该如何实现?

2 个答案:

答案 0 :(得分:0)

首先,根据您使用的数据库,在创建表时需要指定“删除级联”

    ex:
    CREATE TABLE supplier
( supplier_id numeric(10) not null,
  supplier_name varchar2(50) not null,
  contact_name varchar2(50),
  CONSTRAINT supplier_pk PRIMARY KEY (supplier_id)
);

CREATE TABLE products
( product_id numeric(10) not null,
  supplier_id numeric(10) not null,
  CONSTRAINT fk_supplier
    FOREIGN KEY (supplier_id)
    REFERENCES supplier(supplier_id)
    ON DELETE CASCADE
);

产品表使用Supplier_id的外键连接到供应商表。 如果您从供应商表中删除一条记录,则具有相同Supplier_id的相应产品记录也将被删除。

ex.
delete from supplier where supplier_id = 1

对应的产品记录会被自动删除,以及即使你只有从供应商表指定删除。

答案 1 :(得分:0)

假设数据以整数/字符串形式存储在帖子中。您可以添加此代码来查询帖子元等于当前删除候选者的帖子,然后在结果中迭代删除它们。

<?php
add_action('before_delete_post', 'my_before_delete_post');
function my_before_delete_post($postid)
{
    $args  = array(
        'post_type' => array(
            'post'
        ),
        'meta_query' => array(
            array(
                'key' => 'custum-id-1',
                'value' => get_post_field( 'post_name', $postid )
            )
        )
    );
    // The Query
    $query = new WP_Query($args);
    // The Loop
    if ($query->have_posts()) {
        while ($query->have_posts()) {
            $query->the_post();
            wp_delete_post(get_the_ID());
        }
    }
    wp_reset_postdata();
}
?>