ISRC番号とAudio PlayerのURLの二つのカスタムフィールドを記事リストから見えてなおかつQuick Editで編集できるようにする方法。

デバッグ
この記事は約8分で読めます。

以下のコードを入れることでできる。

// PART 1: Display columns
// Add custom columns for ISRC and Audio Player URL
function add_acf_custom_columns($columns) {
    $columns['isrc_number'] = __('ISRC Number');
    $columns['audio_player_url'] = __('Audio Player URL');
    return $columns;
}
add_filter('manage_post_posts_columns', 'add_acf_custom_columns');

// Populate the columns with ACF field data
function display_acf_custom_columns($column, $post_id) {
    switch ($column) {
        case 'isrc_number':
            echo get_field('isrc_number', $post_id);
            break;
        case 'audio_player_url':
            $url = get_field('audio_player_url', $post_id);
            if ($url) {
                echo '<a href="' . esc_url($url) . '" target="_blank">' . esc_url($url) . '</a>';
            }
            break;
    }
}
add_action('manage_posts_custom_column', 'display_acf_custom_columns', 10, 2);

// Make columns sortable
function make_acf_columns_sortable($columns) {
    $columns['isrc_number'] = 'isrc_number';
    return $columns;
}
add_filter('manage_edit-post_sortable_columns', 'make_acf_columns_sortable');

// PART 2: Quick Edit functionality
// Add quick edit fields
function add_quick_edit_custom_box($column_name, $post_type) {
    if ($post_type !== 'post') return;
    
    switch($column_name) {
        case 'isrc_number':
            ?>
            <fieldset class="inline-edit-col-right">
                <div class="inline-edit-col">
                    <label>
                        <span class="title">ISRC</span>
                        <span class="input-text-wrap">
                            <input type="text" name="isrc_number" class="isrc_number">
                        </span>
                    </label>
                </div>
            </fieldset>
            <?php
            break;
        case 'audio_player_url':
            ?>
            <fieldset class="inline-edit-col-right">
                <div class="inline-edit-col">
                    <label>
                        <span class="title">Audio URL</span>
                        <span class="input-text-wrap">
                            <input type="url" name="audio_player_url" class="audio_player_url">
                        </span>
                    </label>
                </div>
            </fieldset>
            <?php
            break;
    }
}
add_action('quick_edit_custom_box', 'add_quick_edit_custom_box', 10, 2);

// Save quick edit data
function save_quick_edit_data($post_id) {
    if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) return;
    
    if (isset($_POST['isrc_number'])) {
        update_field('isrc_number', $_POST['isrc_number'], $post_id);
    }
    if (isset($_POST['audio_player_url'])) {
        update_field('audio_player_url', $_POST['audio_player_url'], $post_id);
    }
}
add_action('save_post', 'save_quick_edit_data');

// Populate quick edit fields with existing values
function add_quick_edit_javascript() {
    ?>
    <script type="text/javascript">
    jQuery(document).ready(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 row = $('#post-' + post_id);
                var isrc = $('.isrc_number', row).text();
                var audio_url = $('.audio_player_url', row).text();
                
                $('#edit-' + post_id + ' input[name="isrc_number"]').val(isrc);
                $('#edit-' + post_id + ' input[name="audio_player_url"]').val(audio_url);
            }
        };
    });
    </script>
    <?php
}
add_action('admin_footer', 'add_quick_edit_javascript');

Meta Fields Blockプラグインブロックベーステーマでも表示させることはできる。

ただし、DownloadボタンにAdvanced Custom Fieldsの値を持ってくるということはできなかった。phpをいじれるならできるんだろうけれども、ブロックベーステーマでやるには色々とやり方が不足している。

デバッグ
Genx Beatsをフォローする
プロフィール
アバター画像

1982年生まれ、ヒップホップやラップビートの制作をしているビートメイカー兼音楽プロデューサーです。AIビート作成の研究や、インディーズ音楽活動や個人ブログを通じてスモールビジネスのウェブ上でのマーケティング戦略を研究を行っています。インターナショナル育ちのため、英語が分かります。趣味は筋トレ、アートワーク制作、WordPressカスタマイズ、web3、NFT。韓国が大好き。

Genx Beatsをフォローする
ビートライセンシング

コメント

寄付する

タイトルとURLをコピーしました