私はうまく機能しているフロントエンドページの削除を有効にするために使用しているこの機能を持っています
function delete_post(){
global $post;
$deletepostlink= add_query_arg( 'frontend', 'true', get_delete_post_link( get_the_ID() ) );
if (current_user_can('edit_post', $post->ID)) {
echo '<span><a class="post-delete-link" onclick="return confirm(\'Are you sure to delete?\')" href="'.$deletepostlink.'">Delete this </a></span>';
}
}
//Redirect after delete post in frontend
add_action('trashed_post','trash_redirection_frontend');
function trash_redirection_frontend($post_id) {
if ( filter_input( INPUT_GET, 'frontend', FILTER_VALIDATE_BOOLEAN ) ) {
wp_redirect( get_option('siteurl').'/' );
exit;
}
}
そして、私はこれを使用してボタンのための私のテンプレートファイルです
<?php echo delete_post(); ?>
私が達成しようとしているのは、ユーザーがフロントエンドからページを削除したときに、その親ページのすべての子ページも削除される(またはゴミ箱に移動する)ということです。
ありがとう
さて、おもしろい質問です。私が調べた限りでは、投稿の削除時にフックが呼び出されるのは、削除された投稿IDをパラメータとして渡すことです。親ページを削除するときはうまくいきますが、子ページを削除するためにtrashed_post
に関数をフックしたときにはうまくいかないでしょう。子ページだからそれは期待通りには動作しません。
それでは解決策を見つけてください。ここでは、子ページの投稿ステータスをtrash
-に変更するために、SQLコマンドで関数を書き換えました。
function delete_post(){
global $post;
$deletepostlink= add_query_arg( 'frontend', 'true', get_delete_post_link( get_the_ID() ) );
if (current_user_can('edit_post', $post->ID)) {
echo '<span><a class="post-delete-link" onclick="return confirm(\'Are you sure to delete?\')" href="' . $deletepostlink . '">Delete this </a></span>';
}
}
//Redirect after delete post in frontend
add_action('trashed_post','trash_redirection_frontend');
function trash_redirection_frontend($post_id) {
if ( filter_input( INPUT_GET, 'frontend', FILTER_VALIDATE_BOOLEAN ) ) {
$args = array(
'posts_per_page' => -1,
'order'=> 'ASC',
'post_parent' => $post_id,
'post_type' => 'page'
);
// Filter through all pages and find Portfolio's children
$children = get_children( $args );
global $wpdb;
foreach($children as $child){
$childs[$child->ID] = $child->ID;
}
$sql = "UPDATE {$wpdb->posts} SET post_status = 'trash' WHERE ID IN (" . implode( ', ', $childs ) . ")";
$wpdb->query($sql);
wp_redirect( get_option('siteurl').'/' );
exit;
}
}
お役に立てば幸いです。