/** * Retrieve a list of records and their corresponding tracks for use in Cue. * * @since 1.5.0 */ function audiotheme_ajax_get_playlist_records() { global $wpdb; $data = array(); $page = isset($_POST['paged']) ? absint($_POST['paged']) : 1; $posts_per_page = isset($_POST['posts_per_page']) ? absint($_POST['posts_per_page']) : 2; $records = new WP_Query(array('post_type' => 'audiotheme_record', 'post_status' => 'publish', 'posts_per_page' => $posts_per_page, 'paged' => $page, 'orderby' => 'title', 'order' => 'ASC')); if ($records->have_posts()) { foreach ($records->posts as $record) { $image = wp_get_attachment_image_src(get_post_thumbnail_id($record->ID), array(120, 120)); $data[$record->ID] = array('id' => $record->ID, 'title' => $record->post_title, 'artist' => get_audiotheme_record_artist($record->ID), 'release' => get_audiotheme_record_release_year($record->ID), 'thumbnail' => $image[0], 'tracks' => array()); } $tracks = $wpdb->get_results("SELECT p.ID, p.post_title, p2.ID AS record_id\r\n\t\t\tFROM {$wpdb->posts} p\r\n\t\t\tINNER JOIN {$wpdb->posts} p2 ON p.post_parent=p2.ID\r\n\t\t\tWHERE p.post_type='audiotheme_track' AND p.post_status='publish'\r\n\t\t\tORDER BY p.menu_order ASC"); if ($tracks) { foreach ($tracks as $track) { if (!isset($data[$track->record_id])) { continue; } $data[$track->record_id]['tracks'][] = array('id' => $track->ID, 'title' => $track->post_title); } } // Remove records that don't have any tracks. foreach ($data as $key => $item) { if (empty($item['tracks'])) { unset($data[$key]); } } } $send['maxNumPages'] = $records->max_num_pages; $send['records'] = array_values($data); wp_send_json_success($send); }
/** * Display custom record columns. * * @since 1.0.0 * * @param string $column_id The id of the column to display. * @param int $post_id Post ID. */ function audiotheme_record_display_columns($column_name, $post_id) { global $post; switch ($column_name) { case 'release_year': echo get_audiotheme_record_release_year($post_id); break; case 'track_count': $args = array('post_type' => 'audiotheme_track', 'post_parent' => $post_id); printf('<a href="%s">%s</a>', esc_url(add_query_arg($args, admin_url('edit.php'))), get_post_meta($post_id, '_audiotheme_track_count', true)); break; } }
?> </span> </a> </p> <?php } ?> <?php the_title('<h2 class="audiotheme-record-title entry-title" itemprop="name"><a href="' . esc_url(get_permalink()) . '">', '</a></h2>'); ?> <?php $artist = get_audiotheme_record_artist(); $year = get_audiotheme_record_release_year(); if ($artist || $year) { ?> <p class="audiotheme-record-meta entry-meta"> <?php if ($artist) { ?> <strong class="audiotheme-record-meta-artist" itemprop="byArtist"><?php echo esc_html($artist); ?> </strong> <?php } ?> <?php
echo esc_url(get_permalink($post->post_parent)); ?> " itemprop="image"> <?php echo wp_get_attachment_image($thumbnail_id, 'large'); ?> </a> </figure> <?php } ?> <?php $artist = get_audiotheme_record_artist(); $year = get_audiotheme_record_release_year($post->post_parent); $genre = get_audiotheme_record_genre($post->post_parent); if ($artist || $year || $genre) { ?> <div class="record-details record-details--track"> <h2 class="screen-reader-text"><?php esc_html_e('Record Details', 'huesos'); ?> </h2> <dl> <?php if ($artist) { ?> <dt class="record-artist screen-reader-text"><?php esc_html_e('Artist', 'huesos');
<p class="audiotheme-field"> <label for="record-year"><?php _e('Release Year', 'audiotheme'); ?> </label> <input type="text" name="release_year" id="record-year" value="<?php echo esc_attr(get_audiotheme_record_release_year($post->ID)); ?> " class="widefat"> </p> <p class="audiotheme-field"> <label for="record-artist"><?php _e('Artist', 'audiotheme'); ?> </label> <input type="text" name="artist" id="record-artist" value="<?php echo esc_attr(get_audiotheme_record_artist($post->ID)); ?> " class="widefat"> </p> <p class="audiotheme-field"> <label for="record-genre"><?php _e('Genre', 'audiotheme'); ?> </label> <input type="text" name="genre" id="record-genre" value="<?php echo esc_attr(get_audiotheme_record_genre($post->ID)); ?> " class="widefat"> </p>