Add archive links to term/CPT widgets

This commit is contained in:
Robin Cornett
2017-12-06 14:11:53 -05:00
parent 5b4fa611bd
commit 7864160800
3 changed files with 92 additions and 17 deletions
@@ -146,6 +146,30 @@ class DisplayFeaturedImageGenesisWidgetsForm {
);
}
/**
* Get the archive fields (used in term and CPT widgets).
*
* @return array
*/
public function get_archive_fields() {
return array(
array(
'method' => 'checkbox',
'args' => array(
'id' => 'archive_link',
'label' => __( 'Show Archive Link', 'display-featured-image-genesis' ),
),
),
array(
'method' => 'text',
'args' => array(
'id' => 'archive_link_text',
'label' => __( 'Archive Link Text', 'display-featured-image-genesis' ),
),
),
);
}
/**
* Build boxes with fields.
*
@@ -52,13 +52,15 @@ class Display_Featured_Image_Genesis_Widget_CPT extends WP_Widget {
*/
public function defaults() {
return array(
'title' => '',
'post_type' => 'post',
'show_image' => 0,
'image_alignment' => 'alignnone',
'image_size' => 'medium',
'show_title' => 0,
'show_content' => 0,
'title' => '',
'post_type' => 'post',
'show_image' => 0,
'image_alignment' => 'alignnone',
'image_size' => 'medium',
'show_title' => 0,
'show_content' => 0,
'archive_link' => 0,
'archive_link_text' => __( 'View Content Type Archive', 'display-featured-image-genesis' ),
);
}
@@ -93,6 +95,7 @@ class Display_Featured_Image_Genesis_Widget_CPT extends WP_Widget {
$this->do_image( $instance, $post_type, $title, $permalink );
$this->do_title( $instance, $permalink, $title );
$this->do_intro_text( $instance );
$this->do_archive_link( $permalink, $instance );
echo $args['after_widget'];
}
@@ -267,6 +270,22 @@ class Display_Featured_Image_Genesis_Widget_CPT extends WP_Widget {
return $intro_text;
}
/**
* Echo the CPT archive link.
*
* @param $permalink
* @param $instance
*/
protected function do_archive_link( $permalink, $instance ) {
if ( ! $instance['archive_link'] || ! $instance['archive_link_text'] ) {
return;
}
printf( '<p class="more-from-category"><a href="%s">%s</a></p>',
esc_url( $permalink ),
esc_html( $instance['archive_link_text'] )
);
}
/**
* Update a particular instance.
*
@@ -299,7 +318,8 @@ class Display_Featured_Image_Genesis_Widget_CPT extends WP_Widget {
return array_merge(
$this->get_post_type_fields(),
$form->get_text_fields(),
$form->get_image_fields()
$form->get_image_fields(),
$form->get_archive_fields()
);
}
@@ -339,6 +359,10 @@ class Display_Featured_Image_Genesis_Widget_CPT extends WP_Widget {
'image' => $form->get_image_fields(),
), 'genesis-widget-column-box-top' );
$form->do_boxes( array(
'archive' => $form->get_archive_fields(),
) );
echo '</div>';
}
@@ -53,14 +53,16 @@ class Display_Featured_Image_Genesis_Widget_Taxonomy extends WP_Widget {
*/
public function defaults() {
return array(
'title' => '',
'taxonomy' => 'category',
'term' => '',
'show_image' => 0,
'image_alignment' => '',
'image_size' => 'medium',
'show_title' => 0,
'show_content' => 0,
'title' => '',
'taxonomy' => 'category',
'term' => '',
'show_image' => 0,
'image_alignment' => '',
'image_size' => 'medium',
'show_title' => 0,
'show_content' => 0,
'archive_link' => 0,
'archive_link_text' => __( 'View Term Archive', 'display-featured-image-genesis' ),
);
}
@@ -103,6 +105,8 @@ class Display_Featured_Image_Genesis_Widget_Taxonomy extends WP_Widget {
$this->do_content( $term, $instance );
$this->do_archive_link( $term, $instance );
echo $args['after_widget'];
}
@@ -176,6 +180,22 @@ class Display_Featured_Image_Genesis_Widget_Taxonomy extends WP_Widget {
echo genesis_html5() ? '</div>' : '';
}
/**
* Echo the term archive link.
*
* @param $term
* @param $instance
*/
protected function do_archive_link( $term, $instance ) {
if ( ! $instance['archive_link'] || ! $instance['archive_link_text'] ) {
return;
}
printf( '<p class="more-from-category"><a href="%s">%s</a></p>',
esc_url( get_term_link( $term ) ),
esc_html( $instance['archive_link_text'] )
);
}
/**
* Update a particular instance.
*
@@ -203,10 +223,12 @@ class Display_Featured_Image_Genesis_Widget_Taxonomy extends WP_Widget {
*/
public function get_fields( $instance = array() ) {
$form = $this->get_form_class( $instance );
return array_merge(
$form->get_text_fields(),
$this->get_taxonomy_fields( $instance ),
$form->get_image_fields()
$form->get_image_fields(),
$form->get_archive_fields()
);
}
@@ -248,11 +270,16 @@ class Display_Featured_Image_Genesis_Widget_Taxonomy extends WP_Widget {
'image' => $form->get_image_fields(),
), 'genesis-widget-column-box-top' );
$form->do_boxes( array(
'archive' => $form->get_archive_fields(),
) );
echo '</div>';
}
/**
* Get the plugin widget forms class.
*
* @param array $instance
*
* @return \DisplayFeaturedImageGenesisWidgetsForm