サポート » 使い方全般 » 親記事を消したら子記事も消えるようにしたい

  • 解決済 thds

    (@thds)


    カスタム投稿の記事に属性で階層を設定しています。
    他の投稿記事から親として設定されている記事をゴミ箱に移動、あるいは削除した場合に、
    その記事を親としている子記事も全て同様にゴミ箱に移動、削除されるようにしたいのですが、
    良い方法はないでしょうか?よろしくお願いします。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • Tsuyoshi.

    (@andante0727)

    以下は固定ページの例ですが、似たような感じでできるんじゃないでしょうか。

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

    Tsuyoshi.

    (@andante0727)

    多分こんな感じ。検証はしてないので、ご自身でいろいろしらべてみてください。

    <?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がありましたし、これは何故動作しないのでしょうか?

    Tsuyoshi.

    (@andante0727)

    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)

    結局動かなかった理由は分かりませんでした。
    別件として質問させて頂きたいと思います。
    ありがとうございました。

6件の返信を表示中 - 1 - 6件目 (全6件中)
  • トピック「親記事を消したら子記事も消えるようにしたい」には新たに返信することはできません。