Привет всем! У меня проблемка. Я создал виджет, добавил инпуты и селекты. В первом селекте я получаю сайт из мультисайта, после этого сохраняю и у меня в след селекте появляюся категории с этого сайта, выбираю категорию, после этого снова сохранение и в след. селекте посты из категории. Всё прогружается только после кнопки save соответственно. Я набросал скриптик на js, который бы сразу при change вытаскивал всё без надобности в кнопки save, чтобы сразу видеть изменения. Он работает, сохраняет с нужными данными, но как только я нажимаю save, то всё, больше скрипт не работает, как будто мой js становится недоступным, почему так происходит, кто знает ответ?
class Glenbrook_Sites_Widget1 extends WP_Widget {
public function __construct() {
parent::__construct(
'glenbrook_sites_widget1',
'Glenbrook Sites Widget 1',
array(
'description' => '',
'customize_selective_refresh' => true
)
);
add_action( 'widgets_init', function() {
register_widget( 'Glenbrook_Sites_Widget1' );
} );
add_action( 'admin_enqueue_scripts', function() {
wp_enqueue_script( 'scripts_admin.js', get_template_directory_uri() . '/js/scripts_admin.js', array( 'jquery' ) );
} );
}
public function widget( $args, $instance ) {
echo $args['before_widget'];
$site_id = $instance['site'];
$post_id = $instance['post'];
$post_id = remove_postfix( $post_id, '-' );
switch_to_blog( $site_id );
$post_data = get_post( $post_id );
if ( ! empty( $instance['title'] ) ) {
echo $args['before_title'] . apply_filters( 'widget_title', $instance['title'] ) . $args['after_title'];
}
$output = '<div class="widgets__widget widget widget_dark-pine-green widget_theme_index inlinefix">';
$output .= '<p class="widget__heading"><span class="widget__important widget__important_dark-turquoise">PAYMENTS</span>' . esc_html__( $instance['title_block'], 'glenbrook' ) . '</p>';
$output .= '<p class="widget__subtitle">' . nl2br( $post_data->post_title ) . '</p>';
$output .= '<p class="widget__text">' . nl2br( $post_data->post_content ) . '</p>';
$output .= '<a href="' . get_permalink( $post_data->ID ) . '" class="button button_turquoise widget__button">' . esc_html__( $instance['text_button'], 'glenbrook' ) . '</a>';
$output .= '</div>';
echo $output;
restore_current_blog();
echo $args['after_widget'];
}
public function form( $instance ) {
$title_block = isset( $instance['title_block'] ) ? $instance['title_block'] : __( 'NEWS', 'glenbrook' );
$text_button = isset( $instance['text_button'] ) ? $instance['text_button'] : __( 'Find out more', 'glenbrook' );
$site_id = isset( $instance['site'] ) ? $instance['site'] : '';
$category_id = isset( $instance['category'] ) ? $instance['category'] : '';
$post_id = isset( $instance['post'] ) ? $instance['post'] : '';
$sites = get_last_updated();
if( ! empty( $site_id ) ) {
switch_to_blog( $site_id );
$categories = get_categories();
restore_current_blog();
}
if( ! empty( $category_id ) ) {
$result_posts = array();
switch_to_blog( $site_id );
$posts = new WP_Query( 'cat=' . $category_id );
$i = 1;
if ( $posts->have_posts() ) :
while ( $posts->have_posts() ) :
$posts->the_post();
$post_id = get_the_ID();
$post_id = $post_id . '-' . $site_id;
$result_posts[ $i ]['title'] = get_the_title();
$result_posts[ $i ]['id'] = $post_id;
$i++;
endwhile;
else:
endif;
restore_current_blog();
}
?>
<p>
<label for="<?php echo $this->get_field_id( 'title_block' ); ?>"><?php _e( 'Title Block:', 'glenbrook' ); ?></label>
<input value="<?php echo esc_attr( $title_block ); ?>" name="<?php echo $this->get_field_name( 'title_block' ); ?>" id="<?php echo $this->get_field_id( 'title_block' ); ?>" class="widefat" type="text">
</p>
<p>
<label for="<?php echo $this->get_field_id( 'site' ); ?>"><?php _e( 'Site:', 'glenbrook' ); ?></label>
<select name="<?php echo $this->get_field_name( 'site' ); ?>" id="<?php echo $this->get_field_id( 'site' ); ?>" class="widefat">
<?php foreach( $sites as $site ): ?>
<option <?php selected( $site['blog_id'], $site_id, true ); ?> value="<?php echo $site['blog_id']; ?>"><?php echo $site['domain']; ?></option>
<?php endforeach; ?>
</select>
</p>
<p>
<label for="<?php echo $this->get_field_id( 'category' ); ?>"><?php _e( 'Category:', 'glenbrook' ); ?></label>
<select name="<?php echo $this->get_field_name( 'category' ); ?>" id="<?php echo $this->get_field_id( 'category' ); ?>" class="widefat">
<?php foreach( $categories as $category ): ?>
<?php $cat_id = $category->cat_ID . '-' . $site_id; ?>
<option <?php selected( $cat_id, $category_id, true ); ?> value="<?php echo $cat_id; ?>"><?php echo $category->name; ?></option>
<?php endforeach; ?>
<!-- <option value="0">Not Categories</option> -->
</select>
</p>
<p>
<?php print_r( $result ); ?>
<label for="<?php echo $this->get_field_id( 'post' ); ?>"><?php _e( 'Post:', 'glenbrook' ); ?></label>
<select name="<?php echo $this->get_field_name( 'post' ); ?>" id="<?php echo $this->get_field_id( 'post' ); ?>" class="widefat">
<?php foreach( $result_posts as $current_post ): ?>
<option <?php selected( $current_post['id'], $post_id, true ); ?> value="<?php echo $current_post['id']; ?>"><?php echo $current_post['title']; ?></option>
<?php endforeach; ?>
<!-- <option value="0">Not posts</option> -->
</select>
</p>
<p>
<label for="<?php echo $this->get_field_id( 'text_button' ); ?>"><?php _e( 'Text Button:', 'glenbrook' ); ?></label>
<input value="<?php echo esc_attr( $text_button ); ?>" name="<?php echo $this->get_field_name( 'text_button' ); ?>" id="<?php echo $this->get_field_id( 'text_button' ); ?>" class="widefat" type="text">
</p>
<?php
}
}
$glenbrook_sites_widget1 = new Glenbrook_Sites_Widget1();
$( '#widget-glenbrook_sites_widget1-2-site' ).on( 'change', function() {
$( '#widget-glenbrook_sites_widget1-2-savewidget' ).click();
} );
$( '#widget-glenbrook_sites_widget1-2-category' ).on( 'change', function() {
$( '#widget-glenbrook_sites_widget1-2-savewidget' ).click();
} );