AnsPress_Breadcrumbs_Widget()
Description #
AnsPress breadcrumbs widget.
Source #
File: widgets/breadcrumbs.php
class AnsPress_Breadcrumbs_Widget extends WP_Widget {
/**
* Initialize the class
*/
public function __construct() {
parent::__construct(
'ap_breadcrumbs_widget',
__( '(AnsPress) Breadcrumbs', 'anspress-question-answer' ),
array( 'description' => __( 'Show current anspress page navigation', 'anspress-question-answer' ) )
);
}
/**
* Get breadcrumbs array
*
* @return array
*/
public static function get_breadcrumbs() {
$current_page = ap_current_page();
$title = ap_page_title();
$a = array();
$a['base'] = array(
'title' => ap_opt( 'base_page_title' ),
'link' => ap_base_page_link(),
'order' => 0,
);
$current_page = $current_page ? $current_page : '';
if ( is_question() ) {
$a['page'] = array(
'title' => get_the_title(),
'link' => get_permalink( get_question_id() ),
'order' => 10,
);
} elseif ( 'ask' === $current_page ) {
$a['page'] = array(
'title' => get_the_title(),
'link' => ap_get_link_to( 'ask' ),
'order' => 10,
);
} elseif ( 'activities' === $current_page ) {
$a['page'] = array(
'title' => get_the_title(),
'link' => ap_get_link_to( 'activities' ),
'order' => 10,
);
} elseif ( 'base' !== $current_page && '' !== $current_page ) {
$a['page'] = array(
'title' => $title,
'link' => $current_page,
'order' => 10,
);
}
$a = apply_filters( 'ap_breadcrumbs', $a );
return is_array( $a ) ? ap_sort_array_by_order( $a ) : array();
}
/**
* Output AnsPress breadcrumbs.
*
* @return void
*/
public static function breadcrumbs() {
$navs = self::get_breadcrumbs();
echo '<ul class="ap-breadcrumbs clearfix">';
echo '<li class="ap-breadcrumbs-home"><a href="' . esc_url( home_url( '/' ) ) . '" class="apicon-home"></a></li>';
echo '<li><i class="apicon-chevron-right"></i></li>';
$i = 1;
$total_nav = count( $navs );
foreach ( $navs as $k => $nav ) {
if ( ! empty( $nav ) ) {
echo '<li>';
echo '<a href="' . esc_url( $nav['link'] ) . '">' . esc_attr( $nav['title'] ) . '</a>';
echo '</li>';
if ( $total_nav !== $i ) {
echo '<li><i class="apicon-chevron-right"></i></li>';
}
}
++$i;
}
echo '</ul>';
}
/**
* Output widget.
*
* @param array $args Widget arguments.
* @param array $instance Widget instance.
* @return void
*/
public function widget( $args, $instance ) {
echo wp_kses_post( $args['before_widget'] );
self::breadcrumbs();
echo wp_kses_post( $args['after_widget'] );
}
}
Expand full source code Collapse full source code View on GitHub: widgets/breadcrumbs.php:22
Add your comment