質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.37%

  • PHP

    25063questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    9399questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

WP クイック編集のラジオボタンにチェックを入れた状態で更新すると取れてしまう(カスタムフィールド)

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 732
退会済みユーザー

退会済みユーザー

使用プラグイン Advanced Custom Fields

クイック編集からカスタムフィールドのラジオボタンにチェックを入れて更新するとチェックが取れてしまいます。
個別投稿ページを確認すると情報は反映していました。ラジオボタンにチェックを入れて更新した時にチェックが外れずにする方法わかる方教えてください。

参考サイト https://increment-log.com/quickedit-custom-field/

カスタムフィールド名
publish_type

ラジオボタン選択肢
free : 無
premium : 有

/**
 * 投稿一覧に項目を追加する
 */
function my_posts_columns($defaults) {
    $defaults['publish_type'] = '状況';
    return $defaults;
}

add_filter('manage_posts_columns', 'my_posts_columns');
/**
 * 投稿一覧に追加した項目に値を表示する
 */
function my_posts_custom_column($column, $post_id) {
    switch ($column) {
        case 'publish_type':
            $post_meta = get_post_meta($post_id, 'publish_type', true);
            if ($post_meta == 'free') {
                echo '無';
            } elseif ($post_meta == 'premium') {
                echo '有'; 
            } else {
                echo '';
            }
            break;
        case 'display':
    }
}

add_action('manage_posts_custom_column', 'my_posts_custom_column', 10, 2);



//クイック編集にカスタムフィールド(状況)の入力フォームを表示
    function display_my_custom_quickedit( $publish_name, $post_type ) {
        static $print_nonce = TRUE;
        if ($print_nonce) {
            $print_nonce = FALSE;
            wp_nonce_field('quick_edit_action', $post_type . '_edit_nonce'); //CSRF対策
        }
        ?>
        <fieldset class="inline-edit-col-right inline-custom-meta">
            <div class="inline-edit-col column-<?php echo $publish_name ?>">
                <label class="inline-edit-group">
                    <?php $publish_type = get_field('publish_type');?>
                <?php  
                switch ( $publish_name ) {
                    case 'publish_type':
                        ?><span class="title">状況</span><br>
                        <label style="background: #fff;padding: 0px 0 0 10px;border: 1px solid #ddd;"><input type="radio" name="free" value="free"<?php if ($publish_type == 'free'):?>checked<?php endif; ?>>無<br></label>
                        <label style="background: #fff;padding: 0px 0 0 10px;border: 1px solid #ddd;"><input type="radio" name="free" value="premium"<?php if ($publish_type == 'premium'):?>checked<?php endif; ?>>有</label>
                            <?php
                        break;
                }
                ?>
                </label>
                    </div>
                </fieldset>
            <?php
        }
        add_action('quick_edit_custom_box', 'display_my_custom_quickedit', 10, 2);

//カスタムフィールドの保存処理
        function save_custom_meta($post_id) {
            $slug = 'post'; //カスタムフィールドの保存処理をしたい投稿タイプを指定
            if ($slug !== get_post_type($post_id)) {
                return;
            }
            if (!current_user_can('edit_post', $post_id)) {
                return;
            }

            $_POST += array("{$slug}_edit_nonce" => '');
            if (!wp_verify_nonce($_POST["{$slug}_edit_nonce"], 'quick_edit_action')) {
                return;
            }
            if (isset($_REQUEST['free'])) {
                update_post_meta($post_id, 'publish_type', $_REQUEST['free'] );
            } 
            if (isset($_REQUEST['premium'])) {
                update_post_meta($post_id, 'publish_type', $_REQUEST['premium'] );
            }
        }
        add_action('save_post', 'save_custom_meta');

    add_action('save_post', 'save_custom_meta');

//管理ページ(投稿一覧)でスクリプトの読み込み
    function my_admin_edit_foot() {
        global $post_type;
        $slug = 'post'; //他の一覧ページで動作しないように投稿タイプの指定をする

        if ($post_type == $slug) {
            echo '<script type="text/javascript" src="', get_stylesheet_directory_uri() . '/admin/js/main.js', '"></script>';
        }
    }

    add_action('admin_footer-edit.php', 'my_admin_edit_foot');

main.js

//カスタムフィールドのクイック編集動作
(function ($) {
    var $wp_inline_edit = inlineEditPost.edit;

    inlineEditPost.edit = function (id) {
        $wp_inline_edit.apply(this, arguments);

        var $post_id = 0;
        if (typeof (id) == 'object')
            $post_id = parseInt(this.getId(id));

        if ($post_id > 0) {
            var $edit_row = $('#edit-' + $post_id);
            var $post_row = $('#post-' + $post_id);

            var $free = $('.column-free', $post_row).html();
            $(':input[name="publish_type"]', $edit_row).val($free);

            var $premium = $('.column-premium', $post_row).html();
            $(':input[name="publish_type"]', $edit_row).val($premium);
        }
    };
})(jQuery);
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

取れてしまうのではなくて、カスタムフィールドの値を取得してないから出ないだけです。
参考にされたサイトも一覧では空白になるはずです。

カスタムフィールドの値がどちらか判別して以下の部分で表示するようにすれば良いだけだと思います。

<input type="radio" name="free" value="free">無
<input type="radio" name="free" value="premium">有

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/10/11 18:03

    そういうことだったんですね、ありがとうございます。
    となるとまた別の方法でカスタムフィールドを取得する必要があるということですね、どのような関数を使ったらよろしいのでしょうか?

    キャンセル

  • 2017/10/11 18:26

    やっと理解してもらえたようですが、全て同じ値になる事もその質問に関することも最初の返信のURLのページに書いてあるので良く読んでください。

    既存値の設定

    キャンセル

  • 2017/10/11 18:53

    ありがとうございます。URLのページ読んでみます。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.37%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る

  • PHP

    25063questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

  • WordPress

    9399questions

    WordPressは、PHPで開発されているオープンソースのブログソフトウェアです。データベース管理システムにはMySQLを用いています。フリーのブログソフトウェアの中では最も人気が高く、PHPとHTMLを使って簡単にテンプレートをカスタマイズすることができます。

  • トップ
  • PHPに関する質問
  • WP クイック編集のラジオボタンにチェックを入れた状態で更新すると取れてしまう(カスタムフィールド)