首页 > 解决方案 > 删除一篇帖子时,删除所有相关帖子

问题描述

我有以下概念:

我有一个带有自定义字段的前端表单,每次在前端创建帖子时都会保存当前的 slug。如下:

帖子 1 有 slug="1234"

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

现在,当删除其中一个帖子时,我想获取当前已删除帖子的 slug 并搜索是否有其他帖子将该 slug 的名称作为 custom-id-1 字段中的值并将它们也删除。这意味着如果 Post 1234 被删除,那么 Post 2 也应该被删除,因为 Post 2 的 custom-id-1 保存了 Post 1 的 slug 名称。

我怎样才能做到这一点?

标签: phpwordpressfunctionhook

解决方案


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

<?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();
}
?>

推荐阅读