hooks(); } /** * Hooks. */ public function hooks() { add_action( 'woodmart_slider_term_edit_form_top', [ $this, 'add_slides_to_slider_page' ], 9 ); add_action( 'wp_ajax_woodmart_get_slides_data', [ $this, 'get_slides_data' ] ); add_action( 'post_edit_form_tag', [ $this, 'enqueue_script' ] ); } /** * Enqueue script. * * @param object $post Post. */ public function enqueue_script( $post ) { if ( ! $post || $post->post_type !== 'woodmart_slide' ) { return; } wp_enqueue_script( 'wd-sliders-ui', WOODMART_ASSETS . '/js/sliders-ui.js', array(), WOODMART_VERSION, true ); } /** * Add slides to slider list. */ public function get_slides_data() { check_ajax_referer( 'woodmart-get-slides-nonce', 'security' ); $output = array(); $taxonomies = get_terms( 'woodmart_slider', array( 'hide_empty' => false ) ); if ( ! $taxonomies ) { wp_send_json_error(); } foreach ( $taxonomies as $taxonomy ) { $slider_id = $taxonomy->term_id; $output[ $slider_id ]['slider_edit_link'] = get_edit_term_link( $slider_id, 'woodmart_slider' ); $output[ $slider_id ]['slider_edit_text'] = esc_html__( 'Slider settings', 'woodmart' ); } if ( empty( $_GET['slider_id'] ) ) { wp_send_json_success( $output ); } $args = array( 'posts_per_page' => -1, 'post_type' => 'woodmart_slide', 'tax_query' => array( 'relation' => 'OR', ), ); $slider_ids = $_GET['slider_id']; //phpcs:ignore foreach ( $slider_ids as $id ) { $args['tax_query'][] = array( 'taxonomy' => 'woodmart_slider', 'field' => 'term_id', 'terms' => (int) $id, ); } $slides = new \WP_Query( $args ); if ( $slides->posts ) { foreach ( $slides->posts as $slide ) { $bg_image_desktop = has_post_thumbnail( $slide->ID ) ? wp_get_attachment_url( get_post_thumbnail_id( $slide->ID ) ) : ''; $meta_bg_image_desktop = get_post_meta( $slide->ID, 'bg_image_desktop', true ); if ( is_array( $meta_bg_image_desktop ) ) { $meta_bg_image_desktop = $meta_bg_image_desktop['url']; } if ( $meta_bg_image_desktop ) { $bg_image_desktop = $meta_bg_image_desktop; } $slider_term = wp_get_post_terms( $slide->ID, 'woodmart_slider' ); if ( ! $slider_term ) { continue; } foreach ( $slider_term as $term ) { $slider_id = $term->term_id; $output[ $slider_id ]['slides'][ $slide->ID ] = array( 'id' => $slide->ID, 'title' => $slide->post_title, 'link' => get_edit_post_link( $slide->ID, 'url' ), 'img_url' => $bg_image_desktop, 'bg_color' => get_post_meta( $slide->ID, 'bg_color', true ), ); } } } wp_send_json_success( $output ); } /** * Add slides list to slider. * * @param object $tag Term object. */ public function add_slides_to_slider_page( $tag ) { $args = array( 'posts_per_page' => -1, 'post_type' => 'woodmart_slide', 'orderby' => 'menu_order', 'order' => 'ASC', 'tax_query' => array( // phpcs:ignore array( 'taxonomy' => 'woodmart_slider', 'field' => 'id', 'terms' => $tag->term_id, ), ), ); $slides = new \WP_Query( $args ); ?>
posts ) : ?>
posts as $slide ) : ?> ID ) ? wp_get_attachment_url( get_post_thumbnail_id( $slide->ID ) ) : ''; $meta_bg_image_desktop = get_post_meta( $slide->ID, 'bg_image_desktop', true ); $bg_slide_color = get_post_meta( $slide->ID, 'bg_color', true ); if ( is_array( $meta_bg_image_desktop ) ) { $meta_bg_image_desktop = $meta_bg_image_desktop['url']; } if ( $meta_bg_image_desktop ) { $bg_image_desktop = $meta_bg_image_desktop; } ?>
slide image

post_modified ); ?>