Files
nurinda.co.id---old/wp-content/plugins/mashsharer/includes/admin/meta-box/inc/fields/oembed.php
T

123 lines
2.8 KiB
PHP

<?php
/**
* oEmbed field class.
*/
class MASHSB_RWMB_OEmbed_Field extends MASHSB_RWMB_URL_Field
{
/**
* Enqueue scripts and styles
*/
public static function admin_enqueue_scripts()
{
wp_enqueue_style( 'mashsb-rwmb-oembed', MASHSB_RWMB_CSS_URL . 'oembed.css' );
wp_enqueue_script( 'mashsb-rwmb-oembed', MASHSB_RWMB_JS_URL . 'oembed.js', array(), MASHSB_RWMB_VER, true );
}
/**
* Add actions
*/
public static function add_actions()
{
add_action( 'wp_ajax_rwmb_get_embed', array( __CLASS__, 'wp_ajax_get_embed' ) );
}
/**
* Ajax callback for returning oEmbed HTML
*/
public static function wp_ajax_get_embed()
{
$url = (string) filter_input( INPUT_POST, 'url', FILTER_SANITIZE_URL );
wp_send_json_success( self::get_embed( $url ) );
}
/**
* Get embed html from url
*
* @param string $url
* @return string
*/
public static function get_embed( $url )
{
/**
* Set arguments for getting embeded HTML.
* Without arguments, default width will be taken from global $content_width, which can break UI in the admin
* @link https://github.com/rilwis/meta-box/issues/801
* @see WP_oEmbed::fetch()
* @see WP_Embed::shortcode()
* @see wp_embed_defaults()
*/
$args = array();
if ( is_admin() )
{
$args['width'] = 360;
}
// Try oembed first
$embed = wp_oembed_get( $url, $args );
// If no oembed provides found, try WordPress auto embed
if ( ! $embed )
{
$embed = $GLOBALS['wp_embed']->shortcode( $args, $url );
}
return $embed ? $embed : __( 'Embed HTML not available.', 'meta-box' );
}
/**
* Get field HTML
*
* @param mixed $meta
* @param array $field
* @return string
*/
public static function html( $meta, $field )
{
$attributes = self::get_attributes( $field, $meta );
return sprintf(
'<input %s>
<a href="#" class="show-embed button">%s</a>
<span class="spinner"></span>
<div class="embed-code">%s</div>',
self::render_attributes( $attributes ),
__( 'Preview', 'meta-box' ),
$meta ? self::get_embed( $meta ) : ''
);
}
/**
* Output the field value
* Display embed media
*
* @param array $field Field parameters
* @param array $args Additional arguments. Not used for these fields.
* @param int|null $post_id Post ID. null for current post. Optional.
*
* @return mixed Field value
*/
public static function the_value( $field, $args = array(), $post_id = null )
{
$value = self::get_value( $field, $args, $post_id );
$output = '';
if ( empty( $value ) )
{
return $output;
}
if ( $field['clone'] )
{
$output = '<ul>';
foreach ( $value as $subvalue )
{
$output .= '<li>' . self::get_embed( $subvalue ) . '</li>';
}
$output .= '</ul>';
}
else
{
$output = self::get_embed( $value );
}
return $output;
}
}