公開・削除ボタンを投稿一覧に表示することは可能でしょうか?
-
WP User Frontendを利用して、フロントエンドからの投稿を実現しています。
フロントエンドから投稿があった際、レビュー待ちの状態で保存される様にしています。そのレビュー待ちの投稿を、管理画面の投稿一覧から出来るだけ簡単に公開もしくは削除を行いたいと思っています。
そこで、投稿一覧のカラムとして『公開』『削除』といったボタンを設置したく思っています。
WEB上を探してみても、こういったものは見当たらなかったのですが、そもそも実現は可能でしょうか?
-
>CGさん
その通りです。フロントエンドに『公開ボタン』を設置する方法を発見したのですが、明らかに間違っているように思われたので、元ネタのものを試してみました。
WordPress:投稿の公開ボタンを表示する
Publish pending article from front end with a button?functions.php
function show_publish_button(){ Global $post; //only print fi admin if (current_user_can('manage_options')){ echo '<form name="front_end_publish" method="POST" action=""> <input type="hidden" name="pid" id="pid" value="'.$post->ID.'"> <input type="hidden" name="FE_PUBLISH" id="FE_PUBLISH" value="FE_PUBLISH"> <input type="submit" name="submit" id="submit" value="Publish"> </form>'; } } function change_post_status($post_id,$status){ $current_post = get_post( $post_id, 'ARRAY_A' ); $current_post['post_status'] = $status; wp_update_post($current_post); } if (isset($_POST['FE_PUBLISH']) && $_POST['FE_PUBLISH'] == 'FE_PUBLISH'){ if (isset($_POST['pid']) && !empty($_POST['pid'])){ change_post_status((int)$_POST['pid'],'publish'); } }
表示
show_publish_button();
ボタンは表示されたものの、value=”‘.$post->IDにうまく値が入っていなかったので、Global $postを削除。
function show_publish_button()⇒function show_publish_button($post_id)
show_publish_button⇒show_publish_button($post_id)
としたところ、値は入りましたが、未だ期待する動作は実現していません。function show_publish_button($post_id){ echo '<form name="front_end_publish" method="post" action=""> <input type="hidden" name="pid" id="pid" value="'.$post_id.'"> <input type="hidden" name="fe_publish" id="fe_publish" value="fe_publish"> <input type="submit" name="submit" id="submit" value="publish"> </form>'; } function change_post_status($post_id,$status){ $current_post = get_post( $post_id, 'array_a' ); $current_post['post_status'] = $status; wp_update_post($current_post); } if (isset($_post['fe_publish']) && $_post['fe_publish'] == 'fe_publish'){ if (isset($_post['pid']) && !empty($_post['pid'])){ wp_publish_post((int)$_post['pid']); } } add_theme_support( 'post-thumbnails', array( 'post' ) );//if custom post type then post type name set_post_thumbnail_size( 50, 50, true ); function manage_posts_columns($columns) { $columns['publish'] = "承認"; $columns['thumbnail'] = __('Thumbnail'); $columns['custom_field'] = "カスタムフィールド"; return $columns; } function add_column($column_name, $post_id) { if($column_name == 'publish'){ $pub == show_publish_button($post_id); } if ( $column_name == 'thumbnail') { $thum = get_the_post_thumbnail($post_id, array(150,150), 'thumbnail'); } if( $column_name == 'custom_field' ) { $stitle = get_post_meta($post_id, 'custom_field', true); } if ( isset($thum) && $thum ) { echo $thum; } else if ( isset($stitle) && $stitle ){ echo attribute_escape($stitle); } else if ( isset($pub) && $pub ){ echo $pub; } else { echo __('None'); } } add_filter( 'manage_posts_columns', 'manage_posts_columns' ); add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );
こんにちは
これでうまく動くのか分かりませんが、一点、コーディングミスがあります。
$pub == show_publish_button($post_id);
↓
$pub = show_publish_button($post_id);
です。
様々試してみたところ、以下のコードで期待通りの挙動を得ることが出来ました。
unction show_publish_button($post_id){ $pub_form = <<<EOF <form name="front_end_publish" method="post" action=""> <input type="hidden" name="pid" id="pid" value="{$post_id}"> <input type="hidden" name="fe_publish" id="fe_publish" value="fe_publish"> <input type="submit" name="submit" id="submit" value="approve"> </form> EOF; echo $pub_form; } function change_post_status($post_id,$status){ $current_post = get_post( $post_id, 'ARRAY_A' ); $current_post['post_status'] = $status; wp_update_post($current_post); } if (isset($_POST['fe_publish']) && $_POST['fe_publish'] == 'fe_publish'){ if (isset($_POST['pid']) && !empty($_POST['pid'])){ change_post_status((int)$_POST['pid'],'publish'); } } add_theme_support( 'post-thumbnails', array( 'post' ) );//if custom post type then post type name set_post_thumbnail_size( 50, 50, true ); function manage_posts_columns($columns) { $columns['publish'] = "承認"; $columns['thumbnail'] = __('Thumbnail'); $columns['custom_field'] = "カスタムフィールド"; return $columns; } function add_column($column_name, $post_id) { if($column_name == 'publish'){ $pub = "publish"; } if ( $column_name == 'thumbnail') { $thum = get_the_post_thumbnail($post_id, array(150,150), 'thumbnail'); } if( $column_name == 'custom_field' ) { $stitle = get_post_meta($post_id, 'custom_field', true); } if ( isset($thum) && $thum ) { echo $thum; } else if ( isset($stitle) && $stitle ){ echo attribute_escape($stitle); } else if ( isset($pub) && $pub ){ show_publish_button($post_id); } else { echo __('None'); } } add_filter( 'manage_posts_columns', 'manage_posts_columns' ); add_action( 'manage_posts_custom_column', 'add_column', 10, 2 );
- トピック「公開・削除ボタンを投稿一覧に表示することは可能でしょうか?」には新たに返信することはできません。