By adding the following code, you can achieve this functionality.
// 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');
It is also possible to display this using the Meta Fields Block plugin even in block-based themes.
However, pulling the value of Advanced Custom Fields (ACF) into a Download button was not achievable in this setup. While it could be done by customizing the PHP code, implementing it within the constraints of a block-based theme seems to lack some necessary methods or approaches.
Comment