* @copyright 2019 WPTRT * @license https://www.gnu.org/licenses/gpl-2.0.html GPL-2.0-or-later * @link https://github.com/WPTRT/customize-section-button */ namespace WPTRT\Customize\Section; use WP_Customize_Section; class Button extends WP_Customize_Section { /** * The type of customize section being rendered. * * @since 1.0.0 * @access public * @var string */ public $type = 'wptrt-button'; /** * Custom button text to output. * * @since 1.0.0 * @access public * @var string */ public $button_text = ''; /** * Custom button URL to output. * * @since 1.0.0 * @access public * @var string */ public $button_url = ''; /** * Default priority of the section. * * @since 1.0.0 * @access public * @var string */ public $priority = 999; /** * Add custom parameters to pass to the JS via JSON. * * @since 1.0.0 * @access public * @return array */ public function json() { $json = parent::json(); $theme = wp_get_theme(); $button_url = $this->button_url; // Fall back to the `Theme URI` defined in `style.css`. if ( ! $this->button_url && $theme->get( 'ThemeURI' ) ) { $button_url = $theme->get( 'ThemeURI' ); // Fall back to the `Author URI` defined in `style.css`. } elseif ( ! $this->button_url && $theme->get( 'AuthorURI' ) ) { $button_url = $theme->get( 'AuthorURI' ); } $json['button_text'] = $this->button_text ? $this->button_text : $theme->get( 'Name' ); $json['button_url'] = esc_url_raw( $button_url ); return $json; } /** * Outputs the Underscore.js template. * * @since 1.0.0 * @access public * @return void */ protected function render_template() { ?>
  • {{ data.title }} <# if ( data.button_text && data.button_url ) { #> {{ data.button_text }} <# } #>