解決策が見つかりました。問題は、アクション 'delete_post'でした。 私はPost Status Transitionsに基づいて 'trash_to_publish'に変更しました:https://codex.wordpress.org/Post_Status_Transitions
すべて正常です。私は会社のプロファイルをuntrash場合は、再度、ユーザーからのすべての投稿を公開の機能を使用することができますボーナスとして
/** * Deletes all posts from author of company profile. */ function delete_all_posts_from_author($post_id) { global $post; $id = $post->ID; // Only trigger if post type is "company" if (get_post_type($id) == "company") { $author_id = $post->post_author; $posts_from_author = get_posts( array( 'posts_per_page' => -1, 'post_status' => 'publish', 'post_type' => array('event','job'), 'author' => $author_id, 'fields' => 'ids', // Only get post ID's ) ); foreach ($posts_from_author as $post_from_author) { wp_trash_post($post_from_author, false); // Set to False if you want to send them to Trash. } } } add_action('publish_to_trash', 'delete_all_posts_from_author', 10, 1);
。 /**
* Untrash posts if company profile is untrashed
*/
function untrash_all_posts_from_author($post_id) {
global $post;
$id = $post->ID;
if (get_post_type($id) == "company") {
$author_id = $post->post_author;
$posts_from_author = get_posts(
array(
'posts_per_page' => -1,
'post_status' => 'trash',
'post_type' => array('event','job'),
'author' => $author_id,
'fields' => 'ids', // Only get post ID's
)
);
foreach ($posts_from_author as $post_from_author) {
wp_untrash_post($post_from_author); // Set to False if you want to send them to Trash.
}
}
}
add_action('trash_to_publish', 'untrash_all_posts_from_author', 10, 1);
私が間違いをした場合は、私に知らせてください。
EDIT:wp_delete_post()
のみネイティブ投稿、ページ、および添付ファイルに適用されますので、私はwp_trash_post()
に引数wp_delete_post()
を変更しました。ここで@rarstからの素晴らしい答え:https://wordpress.stackexchange.com/questions/281877/error-after-deleting-custom-post-type-with-a-function-no-trash-used/281888#281888
いいえ:)唯一のことwp_untrash_post()は1つのパラメータを取るだけですが、これは堅実です。 –
ああ、ヒントありがとう。私はそれを変更します:) – Cray
@ DanielH.Jと同じです。と言われましたが、 'wp_trash_post()'、@Crayについてはそうです。 1つのパラメータ、post_idだけが必要です。おそらく 'wp_delete_post()'と混同していると思いますか? –