每当更新父帖子元时,如何更新/添加子帖子元?

时间:2020-03-30 作者:Faruk

我找不到一个非常简单的问题的解决方案。

更新父帖子的元值时,我希望更新链接到此父帖子的所有子帖子的元值。

例如:我希望在为父帖子选择“红色”元值时,为子帖子自动选择“红色”元值。(对于\\u post\\u color元键)或如果此父post值已更新,则子post中的值也必须自动更改。

我试着用下面的代码来做,但没有用。我将其添加到函数中。php文件。

add_action(\'save_post\', \'change_child_posts_meta\', 10, 2);
add_action(\'post_updated\', \'change_child_posts_meta\', 10, 2);
function change_child_posts_meta($post_id, $post)
{

    if ( $post->post_parent == 0 && \'my_post_type\' == $post->post_type) {

        $mettta = get_post_meta( $post->ID , "_post_color" , true );

        $args = array(
            \'post_parent\' => $post->ID,
            \'fields\' => \'ids\',
        );
        $ChildIDs = get_children($args);

        foreach ($ChildIDs as $childID) {
            update_post_meta( $childID, "_post_color", $mettta );
        }

    }
}

1 个回复
最合适的回答,由SO网友:Faruk 整理而成

我找到了问题的原因。由于我处理的帖子类型是woccommerce orders(shop\\u order),因此我必须正确输入帖子状态。

编辑代码如下:

add_action(\'save_post\', \'change_child_posts_meta\', 10, 2);
add_action(\'post_updated\', \'change_child_posts_meta\', 10, 2);

function change_child_posts_meta($post_id, $post)
{

    if ( $post->post_parent == 0 && \'shop_order\' == $post->post_type) {

        $mettta = get_post_meta( $post->ID , "_post_color" , true );

        $args = array(
            \'numberposts\' => -1,
            \'post_type\' => \'shop_order\',
            \'post_parent\' => $post->ID,
            \'post_status\' => array(\'wc-pending\',\'wc-processing\',\'wc-on-hold\',\'wc-completed\',\'wc-cancelled\',\'wc-refunded\',\'wc-failed\',\'wc-shipping-progress\')
        );
        $ChildIDs = get_posts( $args );

        foreach ($ChildIDs as $childID) {
            update_post_meta( $childID->ID, "_post_color", $mettta );
        }

    }
}

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在