FM

/home/u523506497/domains/mymelon.in/public_html/wp-includes/blocks UP

<?php
/**
 * Server-side rendering of the `core/footnotes` block.
 *
 * @package WordPress
 */

/**
 * Renders the `core/footnotes` block on the server.
 *
 * @since 6.3.0
 *
 * @param array    $attributes Block attributes.
 * @param string   $content    Block default content.
 * @param WP_Block $block      Block instance.
 *
 * @return string Returns the HTML representing the footnotes.
 */
function render_block_core_footnotes( $attributes, $content, $block ) {
	// Bail out early if the post ID is not set for some reason.
	if ( empty( $block->context['postId'] ) ) {
		return '';
	}

	if ( post_password_required( $block->context['postId'] ) ) {
		return '';
	}

	$footnotes = get_post_meta( $block->context['postId'], 'footnotes', true );

	if ( ! $footnotes ) {
		return '';
	}

	$footnotes = json_decode( $footnotes, true );

	if ( ! is_array( $footnotes ) || count( $footnotes ) === 0 ) {
		return '';
	}

	$wrapper_attributes = get_block_wrapper_attributes();
	$footnote_index     = 1;

	$block_content = '';

	foreach ( $footnotes as $footnote ) {
		// Translators: %d: Integer representing the number of return links on the page.
		$aria_label     = sprintf( __( 'Jump to footnote reference %1$d' ), $footnote_index );
		$block_content .= sprintf(
			'<li id="%1$s">%2$s <a href="#%1$s-link" aria-label="%3$s">↩︎</a></li>',
			esc_attr( $footnote['id'] ),
			wp_kses_post( $footnote['content'] ),
			esc_attr( $aria_label )
		);
		++$footnote_index;
	}

	return sprintf(
		'<ol %1$s>%2$s</ol>',
		$wrapper_attributes,
		$block_content
	);
}

/**
 * Registers the `core/footnotes` block on the server.
 *
 * @since 6.3.0
 */
function register_block_core_footnotes() {
	register_block_type_from_metadata(
		__DIR__ . '/footnotes',
		array(
			'render_callback' => 'render_block_core_footnotes',
		)
	);
}
add_action( 'init', 'register_block_core_footnotes' );


/**
 * Registers the footnotes meta field required for footnotes to work.
 *
 * @since 6.5.0
 */
function register_block_core_footnotes_post_meta() {
	$post_types = get_post_types( array( 'show_in_rest' => true ) );
	foreach ( $post_types as $post_type ) {
		// Only register the meta field if the post type supports the editor, custom fields, and revisions.
		if (
			post_type_supports( $post_type, 'editor' ) &&
			post_type_supports( $post_type, 'custom-fields' ) &&
			post_type_supports( $post_type, 'revisions' )
		) {
			register_post_meta(
				$post_type,
				'footnotes',
				array(
					'show_in_rest'      => true,
					'single'            => true,
					'type'              => 'string',
					'revisions_enabled' => true,
				)
			);
		}
	}
}

/*
 * Most post types are registered at priority 10, so use priority 20 here in
 * order to catch them.
*/
add_action( 'init', 'register_block_core_footnotes_post_meta', 20 );

/**
 * Adds the footnotes field to the revisions display.
 *
 * @since 6.3.0
 *
 * @param array $fields The revision fields.
 * @return array The revision fields.
 */
function wp_add_footnotes_to_revision( $fields ) {
	$fields['footnotes'] = __( 'Footnotes' );
	return $fields;
}
add_filter( '_wp_post_revision_fields', 'wp_add_footnotes_to_revision' );

/**
 * Gets the footnotes field from the revision for the revisions screen.
 *
 * @since 6.3.0
 *
 * @param string $revision_field The field value, but $revision->$field
 *                               (footnotes) does not exist.
 * @param string $field          The field name, in this case "footnotes".
 * @param object $revision       The revision object to compare against.
 * @return string The field value.
 */
function wp_get_footnotes_from_revision( $revision_field, $field, $revision ) {
	return get_metadata( 'post', $revision->ID, $field, true );
}
add_filter( '_wp_post_revision_field_footnotes', 'wp_get_footnotes_from_revision', 10, 3 );
accordion-
accordion-heading-
accordion-item-
accordion-item.php3052V
accordion-panel-
accordion.php1147V
archives-
archives.php4385V
audio-
avatar-
avatar.php5638V
block-
block.php3122V
blocks-json.php210661V
breadcrumbs-
breadcrumbs.php19057V
button-
button.php4211V
buttons-
calendar-
calendar.php6075V
categories-
categories.php4938V
code-
column-
columns-
comment-author-name-
comment-author-name.php2136V
comment-content-
comment-content.php2459V
comment-date-
comment-date.php1865V
comment-edit-link-
comment-edit-link.php1713V
comment-reply-link-
comment-reply-link.php2075V
comment-template-
comment-template.php4494V
comments-
comments-pagination-
comments-pagination-next-
comments-pagination-next.php1924V
comments-pagination-numbers-
comments-pagination-numbers.php1632V
comments-pagination-previous-
comments-pagination-previous.php1790V
comments-pagination.php1261V
comments-title-
comments-title.php2787V
comments.php6784V
cover-
cover.php7404V
details-
details.php1498V
embed-
file-
file.php1879V
footnotes-
footnotes.php3818V
freeform-
gallery-
gallery.php22345V
group-
heading-
heading.php1301V
home-link-
home-link.php4703V
html-
icon-
icon.php4374V
image-
image.php17642V
index.php5104V
latest-comments-
latest-comments.php5622V
latest-posts-
latest-posts.php10459V
legacy-widget-
legacy-widget.php4011V
list-
list-item-
list.php1273V
loginout-
loginout.php2123V
math-
media-text-
media-text.php4298V
missing-
more-
navigation-
navigation-link-
navigation-link.php16654V
navigation-overlay-close-
navigation-overlay-close.php1765V
navigation-submenu-
navigation-submenu.php11050V
navigation.php70892V
nextpage-
page-list-
page-list-item-
page-list-item.php361V
page-list.php13863V
paragraph-
paragraph.php1139V
pattern-
pattern.php1788V
playlist-
playlist-track-
playlist-track.php2487V
playlist.php6616V
post-author-
post-author-biography-
post-author-biography.php1524V
post-author-name-
post-author-name.php1962V
post-author.php2734V
post-comments-count-
post-comments-count.php1275V
post-comments-form-
post-comments-form.php2805V
post-comments-link-
post-comments-link.php2237V
post-content-
post-content.php2668V
post-date-
post-date.php3692V
post-excerpt-
post-excerpt.php4315V
post-featured-image-
post-featured-image.php9452V
post-navigation-link-
post-navigation-link.php4807V
post-template-
post-template.php5940V
post-terms-
post-terms.php3640V
post-time-to-read-
post-time-to-read.php6411V
post-title-
post-title.php2138V
preformatted-
pullquote-
query-
query-no-results-
query-no-results.php1847V
query-pagination-
query-pagination-next-
query-pagination-next.php3676V
query-pagination-numbers-
query-pagination-numbers.php4700V
query-pagination-previous-
query-pagination-previous.php3473V
query-pagination.php1176V
query-title-
query-title.php2771V
query-total-
query-total.php2471V
query.php5690V
quote-
read-more-
read-more.php1846V
require-dynamic-blocks.php5256V
require-static-blocks.php535V
rss-
rss.php4609V
search-
search.php25600V
separator-
shortcode-
shortcode.php735V
site-logo-
site-logo.php6334V
site-tagline-
site-tagline.php1203V
site-title-
site-title.php1864V
social-link-
social-link.php67602V
social-links-
spacer-
tab-list-
tab-list.php2322V
tab-panel-
tab-panel.php1669V
tab-panels-
table-
tabs-
tabs.php3949V
tag-cloud-
tag-cloud.php1586V
template-part-
template-part.php9964V
term-count-
term-count.php1843V
term-description-
term-description.php1770V
term-name-
term-name.php2038V
term-template-
term-template.php4518V
terms-query-
text-columns-
verse-
video-
video-plain.php0V
video.php2733V
widget-group-
widget-group.php2438V
Blog - Page 290 of 508 - My Melon - Digital Marketing & Creative Agency
Skip to content Skip to footer