|
|
|
<?php
|
|
|
|
|
|
|
|
namespace Aldine;
|
|
|
|
|
|
|
|
class PageButton extends \WP_Widget
|
|
|
|
{
|
|
|
|
/**
|
|
|
|
* Constructor.
|
|
|
|
*
|
|
|
|
* @see WP_Widget::__construct()
|
|
|
|
*
|
|
|
|
*/
|
|
|
|
public function __construct()
|
|
|
|
{
|
|
|
|
parent::__construct('pagebutton', __('Page Button', 'aldine'), [
|
|
|
|
'description' => esc_html__('Add a styled button which links to a page.', 'aldine')
|
|
|
|
]);
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Front-end display of widget.
|
|
|
|
*
|
|
|
|
* @see WP_Widget::widget()
|
|
|
|
*
|
|
|
|
* @param array $args Widget arguments.
|
|
|
|
* @param array $instance Saved values from database.
|
|
|
|
*/
|
|
|
|
public function widget($args, $instance)
|
|
|
|
{
|
|
|
|
echo $args['before_widget'];
|
|
|
|
if (! empty($instance['page_id'])) {
|
|
|
|
if (empty($instance['title'])) {
|
|
|
|
$instance['title'] = get_the_title($instance['page_id']);
|
|
|
|
}
|
|
|
|
printf(
|
|
|
|
'<a class="button" href="%1$s">%2$s</a>',
|
|
|
|
get_permalink($instance['page_id']),
|
|
|
|
apply_filters('widget_title', $instance['title'])
|
|
|
|
);
|
|
|
|
}
|
|
|
|
echo $args['after_widget'];
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Back-end widget form.
|
|
|
|
*
|
|
|
|
* @see WP_Widget::form()
|
|
|
|
*
|
|
|
|
* @param array $instance Previously saved values from database.
|
|
|
|
*/
|
|
|
|
public function form($instance)
|
|
|
|
{
|
|
|
|
$title = ! empty($instance['title']) ? $instance['title'] : '';
|
|
|
|
$page_id = ! empty($instance['page_id']) ? $instance['page_id'] : ''; ?>
|
|
|
|
<p><label for="<?= esc_attr($this->get_field_id('title')); ?>"><?php _e('Title:', 'aldine'); ?></label>
|
|
|
|
<input
|
|
|
|
class="widefat"
|
|
|
|
id="<?= esc_attr($this->get_field_id('title')); ?>"
|
|
|
|
name="<?= esc_attr($this->get_field_name('title')); ?>"
|
|
|
|
type="text"
|
|
|
|
value="<?= esc_attr($title); ?>"></p>
|
|
|
|
<p><label for="<?= esc_attr($this->get_field_id('page_id')); ?>"><?php _e('Page:', 'aldine'); ?></label>
|
|
|
|
<select
|
|
|
|
id="<?= esc_attr($this->get_field_id('page_id')); ?>"
|
|
|
|
name="<?= esc_attr($this->get_field_name('page_id')); ?>">
|
|
|
|
<option value="" <?php selected($page_id, ''); ?>> -- </a>
|
|
|
|
<?php $pages = get_pages();
|
|
|
|
foreach ($pages as $page) { ?>
|
|
|
|
<option value="<?= $page->ID; ?>"
|
|
|
|
<?php selected($page_id, $page->ID); ?>>
|
|
|
|
<?= $page->post_title; ?>
|
|
|
|
</option>
|
|
|
|
<?php } ?>
|
|
|
|
</select></p>
|
|
|
|
<?php
|
|
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Sanitize widget form values as they are saved.
|
|
|
|
*
|
|
|
|
* @see WP_Widget::update()
|
|
|
|
*
|
|
|
|
* @param array $new_instance Values just sent to be saved.
|
|
|
|
* @param array $old_instance Previously saved values from database.
|
|
|
|
*
|
|
|
|
* @return array Updated safe values to be saved.
|
|
|
|
*/
|
|
|
|
public function update($new_instance, $old_instance)
|
|
|
|
{
|
|
|
|
$instance = [];
|
|
|
|
$instance['title'] = ( ! empty($new_instance['title']) ) ? strip_tags($new_instance['title']) : '';
|
|
|
|
$instance['page_id'] = ( ! empty($new_instance['page_id']) ) ? absint($new_instance['page_id']) : '';
|
|
|
|
return $instance;
|
|
|
|
}
|
|
|
|
}
|