如果我理解正确,您希望在上载时将所有附件状态设置为“发布”,而不是“继承”,以防止在父帖子状态更改时更改该状态。让我们看看wp_insert_post
如果它提供了任何可能性。
首先在第3483行(当前版本),如果是附件帖子,帖子状态设置为“继承”:
if ( \'attachment\' === $post_type && ! in_array( $post_status, array( \'inherit\', \'private\', \'trash\', \'auto-draft\' ), true ) ) {
$post_status = \'inherit\';
稍后(第3683行)所有post参数
compacted 放入一个名为
data
:
$data = compact( \'post_author\', \'post_date\', \'post_date_gmt\', \'post_content\', \'post_content_filtered\', \'post_title\', \'post_excerpt\', \'post_status\', \'post_type\', \'comment_status\', \'ping_status\', \'post_password\', \'post_name\', \'to_ping\', \'pinged\', \'post_modified\', \'post_modified_gmt\', \'post_parent\', \'menu_order\', \'post_mime_type\', \'guid\' );
然后(第3703行)还有一个过滤器:
$data = apply_filters( \'wp_insert_attachment_data\', $data, $postarr );
这样,您就有了一个过滤器,它允许您在附件数据实际存储到数据库之前更改附件数据。您可以这样利用它:
add_filter (\'wp_insert_attachment_data\',\'wpse448037_force_attachment_publish\', 10, 2)
function wpse448037_force_attachment_publish ($data, $postarr) {
$data[\'post_status\'] = \'publish\';
return $data;
}
请注意,我没有测试此代码,因此可能需要进行一些调试。