WordPressで、現在閲覧中の記事をその場で削除できるボタンを作る・改

Ads

以前書いた記事がWordPress3.4で
動作しないとのコメントを頂いた
ので改正版を書きます。あまり
需要は無さそうな気がしていまし
たが、意外とあるものなんですね。

以前書いた記事は以下になります。

お手軽WordPress Tips:閲覧している記事をその場で削除するボタンを設置する

これが最新版のWordPressでは動かないみたいですので新しく書き直します。

フロントエンド側に削除用のURLを作る

とりあえず削除用のURLを用意します。get_delete_post_linkでフロントエンド側に削除リンクを呼び出します。

<?php echo get_delete_post_link( $post->ID ) ?>

これで以下のようなURLを呼び出す事が出来ます。

http://example.com/wp-admin/post.php?post=1&action=trash&_wpnonce=うんたらかんたら

これをa要素に含めればいいですね。

<a href="<?php echo get_delete_post_link( $post->ID ) ?>">

ログインユーザーにだけ見せたい

ログインユーザーにだけ見せる為に条件分岐しときます。

<?php if(current_user_can('read_private_pages')) : ?>
ログインしないと見れないよー。僕は実はハゲなんです(嘘です
<?php endif; ?>

current_user_canでユーザーの権限をチェックし、パラメーターとして権限を指定します。サンプルコードのread_private_pagesは管理者、編集者、投稿者までが権限者となります。この権限は以下に一覧表があるので必要に応じて変更して下さい。

Roles and Capabilities – WordPress Codex

削除するかどうか確認したい

基本的にget_delete_post_linkは即削除するみたいですが、誤クリックが怖いので確認するダイアログも欲しい、という方もいるかもしれません。調べたけどWordPress側でやる方法は分からなかったのでJavaScriptでダイアログを出す方法を書いておきます。

<?php if(current_user_can('read_private_pages')) : ?>
<a onclick="return confirm('削除します。宜しいですか?')" href="<?php echo get_delete_post_link( $post->ID ) ?>">記事を削除する</a>
<?php endif; ?>

confirm関数で確認ダイアログを出します。

動作テスト

以下実行テストのキャプチャです。

フロントエンド側で確認ダイアログの出る記事削除ボタンが作成出来ました。

以上です。尚、WordPressの情報を探すときはその記事やフォーラム投稿の日付を確認して頂くと時間のロスを防げるかと思います。