以下は固定ページの例ですが、似たような感じでできるんじゃないでしょうか。
<?php
add_action( 'trash_page', 'trash_child_post' );
function trash_child_post($post_id) {
// 子ページの取得
$my_wp_query = new WP_Query();
$all_wp_pages = $my_wp_query->query( array('post_type' => 'page') );
$children = get_page_children( $post_id, $all_wp_pages );
// 子ページをゴミ箱へ
if ( is_array ( $children ) ) {
foreach( $children as $child ) {
wp_trash_post( $child->ID );
}
}
}
多分こんな感じ。検証はしてないので、ご自身でいろいろしらべてみてください。
<?php
add_action( 'trash_my_post_type', 'trash_child_post' );
function trash_child_post( $post_id ) {
// 子記事の取得
$children = get_children( array('post_type' => 'my_post_type', 'post_parent' => $post_id ) );
// 子記事をゴミ箱へ
if ( is_array ( $children ) ) {
foreach( $children as $child ) {
wp_trash_post( $child->ID );
}
}
}
トピック投稿者
thds
(@thds)
ありがとうございます。大体の流れは掴めました。
しかしゴミ箱に捨てた際のアクションフックは「trashed_post」のようですが、
これがどうにも一切動作せず参っております。
フック名を「all」にした場合は問題無く動作しました。
function test($post_id){
echo "test";
}
add_action('trashed_post', 'test');
post.php内にはtrashed_postのdo_actionがありましたし、これは何故動作しないのでしょうか?
trashed_post ってフックもあるんですかね?
trash_post もあったと思います。
カスタム投稿タイプだとこれらは多分通らないので、前回の投稿に記述している通り trash_投稿タイプ という書き方ができるのでこれを使用します。
add_action( 'trash_my_post_type', 'trash_child_post' );
の部分の my_post_type は投稿タイプによって書き換えてください。
一応動作は確認出来たので。
WordPressで親記事をゴミ箱に移動した時に、子記事もゴミ箱に移動する – WebCake
もしかしたら trashed_投稿タイプ という書き方もできるかもしれませんね。
トピック投稿者
thds
(@thds)
trashed_post、trash_post、両方あるようです。
私の先ほどのテスト用のコードですとtrash_post、及びtrash_投稿タイプ、どちらも全く動作しませんでしたが、
ご教授頂いたコードをコピペした結果問題なく動作しました。
本当にありがとうございました。
何が間違っていたのか検証してみたいと思います。
トピック投稿者
thds
(@thds)
結局動かなかった理由は分かりませんでした。
別件として質問させて頂きたいと思います。
ありがとうございました。