'a2zaal_widget', 'description' => __( 'Display a list of post/cpt title initials that link to a list of posts beginning with that initial.', A2ZAAL_TEXT_DOMAIN ), ); parent::__construct( 'a2zaal_widget', __( 'A2Z Alphabetical Archive Links', A2ZAAL_TEXT_DOMAIN ), $opts ); } function form( $instance ) { $defaults = array( 'selected_post_type' => '', 'title' => '', 'show_counts' => '', ); $instance = wp_parse_args( (array) $instance, $defaults ); extract( $instance ); $available_posts_types = get_post_types( array( 'publicly_queryable' => true ), 'objects' ); $a2zaal_active_post_types = namespace\get_a2zaal_active_post_types(); echo '

Title:

'; echo '

Post Type:

'; echo '

Show Counts:

'; } function update( $new_instance, $old_instance ) { $instance = $old_instance; $instance['title'] = strip_tags( $new_instance['title'] ); $instance['selected_post_type'] = strip_tags( $new_instance['selected_post_type'] ); $instance['show_counts'] = empty( $new_instance['show_counts'] ) ? '' : 'on'; return $instance; } function widget( $args, $instance ) { // TODO: make this dynamic to be able to have custom styles enqueued wp_enqueue_style( 'default_a2zaal_style', A2ZAAL_ROOT_URL . '/css/display.css', array(), A2ZAAL_VERSION ); $post_type_titles_struct = get_option( $instance['selected_post_type'] . A2ZAAL_POSTS_SUFFIX, array() ); $display_links = array(); ksort( $post_type_titles_struct, SORT_NATURAL ); foreach ( $post_type_titles_struct AS $title_initial => $grouped_titles ) { $group_link = '/' . $instance['selected_post_type'] . '/' . A2ZAAL_REWRITE_TAG . '/' . $title_initial; $group_count_display = ! empty( $instance['show_counts'] ) ? '' . number_format_i18n( count( $grouped_titles ) ) . '' : ''; $link_classes = ! empty( $instance['show_counts'] ) ? array( 'count' ) : array(); $link_classes = implode( ' ', apply_filters( 'a2zaal_link_css_class', $link_classes, $instance, $args ) ); $link_title = esc_attr__( trim( apply_filters( 'a2zaal_link_title', '', $instance, $args ) ), A2ZAAL_TEXT_DOMAIN ); $link_text_display = esc_html__( $title_initial, A2ZAAL_TEXT_DOMAIN ); if ( '0' == $title_initial ) { $group_link = '/' . $instance['selected_post_type'] . '/' . A2ZAAL_REWRITE_TAG . '/num'; $link_text_display = '#'; } // TODO: Make sure link is accessable $display_links[] = sprintf( '
  • %s%s
  • ', $group_link, $link_classes, $link_title, $link_text_display, $group_count_display ); } $container_classes = array(); if ( $instance['show_counts'] ) { $container_classes[] = 'counts'; } $container_classes = apply_filters( 'a2zaal_container_classes', $container_classes, $instance, $args ); $container_class_output = empty( $container_classes ) ? '': ' class="' . implode( ' ', $container_classes ) . '"'; if ( empty( $display_links ) ) { $display_links[] = '

    ' . esc_html__( 'No links to display.', A2ZAAL_TEXT_DOMAIN ) . '

    '; } echo $args['before_widget']; echo $args['before_title'] . $instance['title'] . $args['after_title']; echo ''; echo implode( '', $display_links ); echo ''; echo $args['after_widget']; } }