• 解決済 gobylover

    (@gobylover)


    WP User Frontendを利用して、フロントエンドからの投稿を実現しています。
    フロントエンドから投稿があった際、レビュー待ちの状態で保存される様にしています。

    そのレビュー待ちの投稿を、管理画面の投稿一覧から出来るだけ簡単に公開もしくは削除を行いたいと思っています。

    そこで、投稿一覧のカラムとして『公開』『削除』といったボタンを設置したく思っています。

    WEB上を探してみても、こういったものは見当たらなかったのですが、そもそも実現は可能でしょうか?

5件の返信を表示中 - 1 - 5件目 (全5件中)
  • CG

    (@du-bist-der-lenz)

    投稿一覧から、ステータスから公開済みを選択して、更新するまでをショートカットするということですね。

    トピック投稿者 gobylover

    (@gobylover)

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

    です。

    トピック投稿者 gobylover

    (@gobylover)

    >munyaguさん

    ご指摘ありがとうございます。
    その通りですね。

    修正しましたが、状況は改善されませんでした。。。

    トピック投稿者 gobylover

    (@gobylover)

    様々試してみたところ、以下のコードで期待通りの挙動を得ることが出来ました。

    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 );
5件の返信を表示中 - 1 - 5件目 (全5件中)
  • トピック「公開・削除ボタンを投稿一覧に表示することは可能でしょうか?」には新たに返信することはできません。