*
* @link https://developer.wordpress.org/themes/basics/template-files/#template-partials
*
* @package Theme Palace
* @subpackage Edufication
* @since Edufication 1.0.0
*/
/**
* edufication_doctype hook
*
* @hooked edufication_doctype - 10
*
*/
do_action( 'edufication_doctype' );
?>
>
$value ) {
add_action( 'edufication_primary_content', 'edufication_add_'. $section .'_section', $i . 0 );
$i++;
}
do_action( 'edufication_primary_content' );
}PK R3ZcY" " starter-content.phpnu [ array(
'front' => array(
'post_type' => 'page',
'post_title' => esc_html_x( 'Create your website with blocks', 'Theme starter content', 'twentytwentyone' ),
'post_content' => '
' . esc_html_x( 'Create your website with blocks', 'Theme starter content', 'twentytwentyone' ) . '
' . esc_html_x( 'Add block patterns', 'Theme starter content', 'twentytwentyone' ) . '
' . esc_html_x( 'Block patterns are pre-designed groups of blocks. To add one, select the Add Block button [+] in the toolbar at the top of the editor. Switch to the Patterns tab underneath the search bar, and choose a pattern.', 'Theme starter content', 'twentytwentyone' ) . '
' . esc_html_x( 'Frame your images', 'Theme starter content', 'twentytwentyone' ) . '
' . esc_html_x( 'Twenty Twenty-One includes stylish borders for your content. With an Image block selected, open the "Styles" panel within the Editor sidebar. Select the "Frame" block style to activate it.', 'Theme starter content', 'twentytwentyone' ) . '
' . esc_html_x( 'Overlap columns', 'Theme starter content', 'twentytwentyone' ) . '
' . esc_html_x( 'Twenty Twenty-One also includes an overlap style for column blocks. With a Columns block selected, open the "Styles" panel within the Editor sidebar. Choose the "Overlap" block style to try it out.', 'Theme starter content', 'twentytwentyone' ) . '
' . esc_html_x( 'Need help?', 'Theme starter content', 'twentytwentyone' ) . '
',
),
'about',
'contact',
'blog',
),
// Default to a static front page and assign the front and posts pages.
'options' => array(
'show_on_front' => 'page',
'page_on_front' => '{{front}}',
'page_for_posts' => '{{blog}}',
),
// Set up nav menus for each of the two areas registered in the theme.
'nav_menus' => array(
// Assign a menu to the "primary" location.
'primary' => array(
'name' => esc_html__( 'Primary menu', 'twentytwentyone' ),
'items' => array(
'link_home', // Note that the core "home" page is actually a link in case a static front page is not used.
'page_about',
'page_blog',
'page_contact',
),
),
// Assign a menu to the "footer" location.
'footer' => array(
'name' => esc_html__( 'Secondary menu', 'twentytwentyone' ),
'items' => array(
'link_facebook',
'link_twitter',
'link_instagram',
'link_email',
),
),
),
);
/**
* Filters the array of starter content.
*
* @since Twenty Twenty-One 1.0
*
* @param array $starter_content Array of starter content.
*/
return apply_filters( 'twenty_twenty_one_starter_content', $starter_content );
}
PK R3ZU U menu-functions.phpnu [ classes, true ) ) {
// Add toggle button.
$output .= '';
}
return $output;
}
add_filter( 'walker_nav_menu_start_el', 'twenty_twenty_one_add_sub_menu_toggle', 10, 4 );
/**
* Detects the social network from a URL and returns the SVG code for its icon.
*
* @since Twenty Twenty-One 1.0
*
* @param string $uri Social link.
* @param int $size The icon size in pixels.
* @return string
*/
function twenty_twenty_one_get_social_link_svg( $uri, $size = 24 ) {
return Twenty_Twenty_One_SVG_Icons::get_social_link_svg( $uri, $size );
}
/**
* Displays SVG icons in the footer navigation.
*
* @since Twenty Twenty-One 1.0
*
* @param string $item_output The menu item's starting HTML output.
* @param WP_Post $item Menu item data object.
* @param int $depth Depth of the menu. Used for padding.
* @param stdClass $args An object of wp_nav_menu() arguments.
* @return string The menu item output with social icon.
*/
function twenty_twenty_one_nav_menu_social_icons( $item_output, $item, $depth, $args ) {
// Change SVG icon inside social links menu if there is supported URL.
if ( 'footer' === $args->theme_location ) {
$svg = twenty_twenty_one_get_social_link_svg( $item->url, 24 );
if ( ! empty( $svg ) ) {
$item_output = str_replace( $args->link_before, $svg, $item_output );
}
}
return $item_output;
}
add_filter( 'walker_nav_menu_start_el', 'twenty_twenty_one_nav_menu_social_icons', 10, 4 );
/**
* Filters the arguments for a single nav menu item.
*
* @since Twenty Twenty-One 1.0
*
* @param stdClass $args An object of wp_nav_menu() arguments.
* @param WP_Post $item Menu item data object.
* @param int $depth Depth of menu item. Used for padding.
* @return stdClass
*/
function twenty_twenty_one_add_menu_description_args( $args, $item, $depth ) {
if ( '' !== $args->link_after ) {
$args->link_after = '';
}
if ( 0 === $depth && isset( $item->description ) && $item->description ) {
// The extra
element is here for styling purposes: Allows the description to not be underlined on hover.
$args->link_after = '';
}
return $args;
}
add_filter( 'nav_menu_item_args', 'twenty_twenty_one_add_menu_description_args', 10, 3 );
PK R3Z6E E template-functions.phpnu [ ';
}
}
add_action( 'wp_head', 'twenty_twenty_one_pingback_header' );
/**
* Remove the `no-js` class from body if JS is supported.
*
* @since Twenty Twenty-One 1.0
*
* @return void
*/
function twenty_twenty_one_supports_js() {
echo '';
}
add_action( 'wp_footer', 'twenty_twenty_one_supports_js' );
/**
* Changes comment form default fields.
*
* @since Twenty Twenty-One 1.0
*
* @param array $defaults The form defaults.
* @return array
*/
function twenty_twenty_one_comment_form_defaults( $defaults ) {
// Adjust height of comment form.
$defaults['comment_field'] = preg_replace( '/rows="\d+"/', 'rows="5"', $defaults['comment_field'] );
return $defaults;
}
add_filter( 'comment_form_defaults', 'twenty_twenty_one_comment_form_defaults' );
/**
* Determines if post thumbnail can be displayed.
*
* @since Twenty Twenty-One 1.0
*
* @return bool
*/
function twenty_twenty_one_can_show_post_thumbnail() {
/**
* Filters whether post thumbnail can be displayed.
*
* @since Twenty Twenty-One 1.0
*
* @param bool $show_post_thumbnail Whether to show post thumbnail.
*/
return apply_filters(
'twenty_twenty_one_can_show_post_thumbnail',
! post_password_required() && ! is_attachment() && has_post_thumbnail()
);
}
/**
* Returns the size for avatars used in the theme.
*
* @since Twenty Twenty-One 1.0
*
* @return int
*/
function twenty_twenty_one_get_avatar_size() {
return 60;
}
/**
* Creates continue reading text.
*
* @since Twenty Twenty-One 1.0
*/
function twenty_twenty_one_continue_reading_text() {
$continue_reading = sprintf(
/* translators: %s: Post title. Only visible to screen readers. */
esc_html__( 'Continue reading %s', 'twentytwentyone' ),
the_title( '', '', false )
);
return $continue_reading;
}
/**
* Creates the continue reading link for excerpt.
*
* @since Twenty Twenty-One 1.0
*/
function twenty_twenty_one_continue_reading_link_excerpt() {
if ( ! is_admin() ) {
return '… ' . twenty_twenty_one_continue_reading_text() . '';
}
}
// Filter the excerpt more link.
add_filter( 'excerpt_more', 'twenty_twenty_one_continue_reading_link_excerpt' );
/**
* Creates the continue reading link.
*
* @since Twenty Twenty-One 1.0
*/
function twenty_twenty_one_continue_reading_link() {
if ( ! is_admin() ) {
return '';
}
}
// Filter the content more link.
add_filter( 'the_content_more_link', 'twenty_twenty_one_continue_reading_link' );
if ( ! function_exists( 'twenty_twenty_one_post_title' ) ) {
/**
* Adds a title to posts and pages that are missing titles.
*
* @since Twenty Twenty-One 1.0
*
* @param string $title The title.
* @return string
*/
function twenty_twenty_one_post_title( $title ) {
return '' === $title ? esc_html_x( 'Untitled', 'Added to posts and pages that are missing titles', 'twentytwentyone' ) : $title;
}
}
add_filter( 'the_title', 'twenty_twenty_one_post_title' );
/**
* Gets the SVG code for a given icon.
*
* @since Twenty Twenty-One 1.0
*
* @param string $group The icon group.
* @param string $icon The icon.
* @param int $size The icon size in pixels.
* @return string
*/
function twenty_twenty_one_get_icon_svg( $group, $icon, $size = 24 ) {
return Twenty_Twenty_One_SVG_Icons::get_svg( $group, $icon, $size );
}
/**
* Changes the default navigation arrows to svg icons
*
* @since Twenty Twenty-One 1.0
*
* @param string $calendar_output The generated HTML of the calendar.
* @return string
*/
function twenty_twenty_one_change_calendar_nav_arrows( $calendar_output ) {
$calendar_output = str_replace( '« ', is_rtl() ? twenty_twenty_one_get_icon_svg( 'ui', 'arrow_right' ) : twenty_twenty_one_get_icon_svg( 'ui', 'arrow_left' ), $calendar_output );
$calendar_output = str_replace( ' »', is_rtl() ? twenty_twenty_one_get_icon_svg( 'ui', 'arrow_left' ) : twenty_twenty_one_get_icon_svg( 'ui', 'arrow_right' ), $calendar_output );
return $calendar_output;
}
add_filter( 'get_calendar', 'twenty_twenty_one_change_calendar_nav_arrows' );
/**
* Get custom CSS.
*
* Return CSS for non-latin language, if available, or null
*
* @since Twenty Twenty-One 1.0
*
* @param string $type Whether to return CSS for the "front-end", "block-editor", or "classic-editor".
* @return string
*/
function twenty_twenty_one_get_non_latin_css( $type = 'front-end' ) {
// Fetch site locale.
$locale = get_bloginfo( 'language' );
/**
* Filters the fallback fonts for non-latin languages.
*
* @since Twenty Twenty-One 1.0
*
* @param array $font_family An array of locales and font families.
*/
$font_family = apply_filters(
'twenty_twenty_one_get_localized_font_family_types',
array(
// Arabic.
'ar' => array( 'Tahoma', 'Arial', 'sans-serif' ),
'ary' => array( 'Tahoma', 'Arial', 'sans-serif' ),
'azb' => array( 'Tahoma', 'Arial', 'sans-serif' ),
'ckb' => array( 'Tahoma', 'Arial', 'sans-serif' ),
'fa-IR' => array( 'Tahoma', 'Arial', 'sans-serif' ),
'haz' => array( 'Tahoma', 'Arial', 'sans-serif' ),
'ps' => array( 'Tahoma', 'Arial', 'sans-serif' ),
// Chinese Simplified (China) - Noto Sans SC.
'zh-CN' => array( '\'PingFang SC\'', '\'Helvetica Neue\'', '\'Microsoft YaHei New\'', '\'STHeiti Light\'', 'sans-serif' ),
// Chinese Traditional (Taiwan) - Noto Sans TC.
'zh-TW' => array( '\'PingFang TC\'', '\'Helvetica Neue\'', '\'Microsoft YaHei New\'', '\'STHeiti Light\'', 'sans-serif' ),
// Chinese (Hong Kong) - Noto Sans HK.
'zh-HK' => array( '\'PingFang HK\'', '\'Helvetica Neue\'', '\'Microsoft YaHei New\'', '\'STHeiti Light\'', 'sans-serif' ),
// Cyrillic.
'bel' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
'bg-BG' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
'kk' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
'mk-MK' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
'mn' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
'ru-RU' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
'sah' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
'sr-RS' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
'tt-RU' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
'uk' => array( '\'Helvetica Neue\'', 'Helvetica', '\'Segoe UI\'', 'Arial', 'sans-serif' ),
// Devanagari.
'bn-BD' => array( 'Arial', 'sans-serif' ),
'hi-IN' => array( 'Arial', 'sans-serif' ),
'mr' => array( 'Arial', 'sans-serif' ),
'ne-NP' => array( 'Arial', 'sans-serif' ),
// Greek.
'el' => array( '\'Helvetica Neue\', Helvetica, Arial, sans-serif' ),
// Gujarati.
'gu' => array( 'Arial', 'sans-serif' ),
// Hebrew.
'he-IL' => array( '\'Arial Hebrew\'', 'Arial', 'sans-serif' ),
// Japanese.
'ja' => array( 'sans-serif' ),
// Korean.
'ko-KR' => array( '\'Apple SD Gothic Neo\'', '\'Malgun Gothic\'', '\'Nanum Gothic\'', 'Dotum', 'sans-serif' ),
// Thai.
'th' => array( '\'Sukhumvit Set\'', '\'Helvetica Neue\'', 'Helvetica', 'Arial', 'sans-serif' ),
// Vietnamese.
'vi' => array( '\'Libre Franklin\'', 'sans-serif' ),
)
);
// Return if the selected language has no fallback fonts.
if ( empty( $font_family[ $locale ] ) ) {
return '';
}
/**
* Filters the elements to apply fallback fonts to.
*
* @since Twenty Twenty-One 1.0
*
* @param array $elements An array of elements for "front-end", "block-editor", or "classic-editor".
*/
$elements = apply_filters(
'twenty_twenty_one_get_localized_font_family_elements',
array(
'front-end' => array( 'body', 'input', 'textarea', 'button', '.button', '.faux-button', '.wp-block-button__link', '.wp-block-file__button', '.has-drop-cap:not(:focus)::first-letter', '.entry-content .wp-block-archives', '.entry-content .wp-block-categories', '.entry-content .wp-block-cover-image', '.entry-content .wp-block-latest-comments', '.entry-content .wp-block-latest-posts', '.entry-content .wp-block-pullquote', '.entry-content .wp-block-quote.is-large', '.entry-content .wp-block-quote.is-style-large', '.entry-content .wp-block-archives *', '.entry-content .wp-block-categories *', '.entry-content .wp-block-latest-posts *', '.entry-content .wp-block-latest-comments *', '.entry-content p', '.entry-content ol', '.entry-content ul', '.entry-content dl', '.entry-content dt', '.entry-content cite', '.entry-content figcaption', '.entry-content .wp-caption-text', '.comment-content p', '.comment-content ol', '.comment-content ul', '.comment-content dl', '.comment-content dt', '.comment-content cite', '.comment-content figcaption', '.comment-content .wp-caption-text', '.widget_text p', '.widget_text ol', '.widget_text ul', '.widget_text dl', '.widget_text dt', '.widget-content .rssSummary', '.widget-content cite', '.widget-content figcaption', '.widget-content .wp-caption-text' ),
'block-editor' => array( '.editor-styles-wrapper > *', '.editor-styles-wrapper p', '.editor-styles-wrapper ol', '.editor-styles-wrapper ul', '.editor-styles-wrapper dl', '.editor-styles-wrapper dt', '.editor-post-title__block .editor-post-title__input', '.editor-styles-wrapper .wp-block h1', '.editor-styles-wrapper .wp-block h2', '.editor-styles-wrapper .wp-block h3', '.editor-styles-wrapper .wp-block h4', '.editor-styles-wrapper .wp-block h5', '.editor-styles-wrapper .wp-block h6', '.editor-styles-wrapper .has-drop-cap:not(:focus)::first-letter', '.editor-styles-wrapper cite', '.editor-styles-wrapper figcaption', '.editor-styles-wrapper .wp-caption-text' ),
'classic-editor' => array( 'body#tinymce.wp-editor', 'body#tinymce.wp-editor p', 'body#tinymce.wp-editor ol', 'body#tinymce.wp-editor ul', 'body#tinymce.wp-editor dl', 'body#tinymce.wp-editor dt', 'body#tinymce.wp-editor figcaption', 'body#tinymce.wp-editor .wp-caption-text', 'body#tinymce.wp-editor .wp-caption-dd', 'body#tinymce.wp-editor cite', 'body#tinymce.wp-editor table' ),
)
);
// Return if the specified type doesn't exist.
if ( empty( $elements[ $type ] ) ) {
return '';
}
// Include file if function doesn't exist.
if ( ! function_exists( 'twenty_twenty_one_generate_css' ) ) {
require_once get_theme_file_path( 'inc/custom-css.php' ); // phpcs:ignore WPThemeReview.CoreFunctionality.FileInclude.FileIncludeFound
}
// Return the specified styles.
return twenty_twenty_one_generate_css( // @phpstan-ignore-line.
implode( ',', $elements[ $type ] ),
'font-family',
implode( ',', $font_family[ $locale ] ),
null,
null,
false
);
}
/**
* Print the first instance of a block in the content, and then break away.
*
* @since Twenty Twenty-One 1.0
*
* @param string $block_name The full block type name, or a partial match.
* Example: `core/image`, `core-embed/*`.
* @param string|null $content The content to search in. Use null for get_the_content().
* @param int $instances How many instances of the block will be printed (max). Default 1.
* @return bool Returns true if a block was located & printed, otherwise false.
*/
function twenty_twenty_one_print_first_instance_of_block( $block_name, $content = null, $instances = 1 ) {
$instances_count = 0;
$blocks_content = '';
if ( ! $content ) {
$content = get_the_content();
}
// Parse blocks in the content.
$blocks = parse_blocks( $content );
// Loop blocks.
foreach ( $blocks as $block ) {
// Sanity check.
if ( ! isset( $block['blockName'] ) ) {
continue;
}
// Check if this the block matches the $block_name.
$is_matching_block = false;
// If the block ends with *, try to match the first portion.
if ( '*' === $block_name[-1] ) {
$is_matching_block = 0 === strpos( $block['blockName'], rtrim( $block_name, '*' ) );
} else {
$is_matching_block = $block_name === $block['blockName'];
}
if ( $is_matching_block ) {
// Increment count.
$instances_count++;
// Add the block HTML.
$blocks_content .= render_block( $block );
// Break the loop if the $instances count was reached.
if ( $instances_count >= $instances ) {
break;
}
}
}
if ( $blocks_content ) {
/** This filter is documented in wp-includes/post-template.php */
echo apply_filters( 'the_content', $blocks_content ); // phpcs:ignore WordPress.Security.EscapeOutput
return true;
}
return false;
}
/**
* Retrieve protected post password form content.
*
* @since Twenty Twenty-One 1.0
* @since Twenty Twenty-One 1.4 Corrected parameter name for `$output`,
* added the `$post` parameter.
*
* @param string $output The password form HTML output.
* @param int|WP_Post $post Optional. Post ID or WP_Post object. Default is global $post.
* @return string HTML content for password form for password protected post.
*/
function twenty_twenty_one_password_form( $output, $post = 0 ) {
$post = get_post( $post );
$label = 'pwbox-' . ( empty( $post->ID ) ? wp_rand() : $post->ID );
$output = '' . esc_html__( 'This content is password protected. Please enter a password to view.', 'twentytwentyone' ) . '
';
return $output;
}
add_filter( 'the_password_form', 'twenty_twenty_one_password_form', 10, 2 );
/**
* Filters the list of attachment image attributes.
*
* @since Twenty Twenty-One 1.0
*
* @param string[] $attr Array of attribute values for the image markup, keyed by attribute name.
* See wp_get_attachment_image().
* @param WP_Post $attachment Image attachment post.
* @param string|int[] $size Requested image size. Can be any registered image size name, or
* an array of width and height values in pixels (in that order).
* @return string[] The filtered attributes for the image markup.
*/
function twenty_twenty_one_get_attachment_image_attributes( $attr, $attachment, $size ) {
if ( is_admin() ) {
return $attr;
}
if ( isset( $attr['class'] ) && false !== strpos( $attr['class'], 'custom-logo' ) ) {
return $attr;
}
$width = false;
$height = false;
if ( is_array( $size ) ) {
$width = (int) $size[0];
$height = (int) $size[1];
} elseif ( $attachment && is_object( $attachment ) && $attachment->ID ) {
$meta = wp_get_attachment_metadata( $attachment->ID );
if ( isset( $meta['width'] ) && isset( $meta['height'] ) ) {
$width = (int) $meta['width'];
$height = (int) $meta['height'];
}
}
if ( $width && $height ) {
// Add style.
$attr['style'] = isset( $attr['style'] ) ? $attr['style'] : '';
$attr['style'] = 'width:100%;height:' . round( 100 * $height / $width, 2 ) . '%;max-width:' . $width . 'px;' . $attr['style'];
}
return $attr;
}
add_filter( 'wp_get_attachment_image_attributes', 'twenty_twenty_one_get_attachment_image_attributes', 10, 3 );
PK R3Z#O template-tags.phpnu [ %2$s';
$time_string = sprintf(
$time_string,
esc_attr( get_the_date( DATE_W3C ) ),
esc_html( get_the_date() )
);
echo '';
printf(
/* translators: %s: Publish date. */
esc_html__( 'Published %s', 'twentytwentyone' ),
$time_string // phpcs:ignore WordPress.Security.EscapeOutput
);
echo '';
}
}
if ( ! function_exists( 'twenty_twenty_one_posted_by' ) ) {
/**
* Prints HTML with meta information about theme author.
*
* @since Twenty Twenty-One 1.0
*
* @return void
*/
function twenty_twenty_one_posted_by() {
if ( ! get_the_author_meta( 'description' ) && post_type_supports( get_post_type(), 'author' ) ) {
echo '';
printf(
/* translators: %s: Author name. */
esc_html__( 'By %s', 'twentytwentyone' ),
'' . esc_html( get_the_author() ) . ''
);
echo '';
}
}
}
if ( ! function_exists( 'twenty_twenty_one_entry_meta_footer' ) ) {
/**
* Prints HTML with meta information for the categories, tags and comments.
* Footer entry meta is displayed differently in archives and single posts.
*
* @since Twenty Twenty-One 1.0
*
* @return void
*/
function twenty_twenty_one_entry_meta_footer() {
// Early exit if not a post.
if ( 'post' !== get_post_type() ) {
return;
}
// Hide meta information on pages.
if ( ! is_single() ) {
if ( is_sticky() ) {
echo '' . esc_html_x( 'Featured post', 'Label for sticky posts', 'twentytwentyone' ) . '
';
}
$post_format = get_post_format();
if ( 'aside' === $post_format || 'status' === $post_format ) {
echo '' . twenty_twenty_one_continue_reading_text() . '
'; // phpcs:ignore WordPress.Security.EscapeOutput
}
// Posted on.
twenty_twenty_one_posted_on();
// Edit post link.
edit_post_link(
sprintf(
/* translators: %s: Post title. Only visible to screen readers. */
esc_html__( 'Edit %s', 'twentytwentyone' ),
'' . get_the_title() . ''
),
'',
'
'
);
if ( has_category() || has_tag() ) {
echo '';
$categories_list = get_the_category_list( wp_get_list_item_separator() );
if ( $categories_list ) {
printf(
/* translators: %s: List of categories. */
'' . esc_html__( 'Categorized as %s', 'twentytwentyone' ) . ' ',
$categories_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
$tags_list = get_the_tag_list( '', wp_get_list_item_separator() );
if ( $tags_list ) {
printf(
/* translators: %s: List of tags. */
'' . esc_html__( 'Tagged %s', 'twentytwentyone' ) . '',
$tags_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
echo '
';
}
} else {
echo '';
// Posted on.
twenty_twenty_one_posted_on();
// Posted by.
twenty_twenty_one_posted_by();
// Edit post link.
edit_post_link(
sprintf(
/* translators: %s: Post title. Only visible to screen readers. */
esc_html__( 'Edit %s', 'twentytwentyone' ),
'' . get_the_title() . ''
),
'',
''
);
echo '
';
if ( has_category() || has_tag() ) {
echo '';
$categories_list = get_the_category_list( wp_get_list_item_separator() );
if ( $categories_list ) {
printf(
/* translators: %s: List of categories. */
'' . esc_html__( 'Categorized as %s', 'twentytwentyone' ) . ' ',
$categories_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
$tags_list = get_the_tag_list( '', wp_get_list_item_separator() );
if ( $tags_list ) {
printf(
/* translators: %s: List of tags. */
'' . esc_html__( 'Tagged %s', 'twentytwentyone' ) . '',
$tags_list // phpcs:ignore WordPress.Security.EscapeOutput
);
}
echo '
';
}
}
}
}
if ( ! function_exists( 'twenty_twenty_one_post_thumbnail' ) ) {
/**
* Displays an optional post thumbnail.
*
* Wraps the post thumbnail in an anchor element on index views, or a div
* element when on single views.
*
* @since Twenty Twenty-One 1.0
*
* @return void
*/
function twenty_twenty_one_post_thumbnail() {
if ( ! twenty_twenty_one_can_show_post_thumbnail() ) {
return;
}
?>
esc_html__( 'Page', 'twentytwentyone' ) . ' ',
'mid_size' => 0,
'prev_text' => sprintf(
'%s %s',
is_rtl() ? twenty_twenty_one_get_icon_svg( 'ui', 'arrow_right' ) : twenty_twenty_one_get_icon_svg( 'ui', 'arrow_left' ),
wp_kses(
__( 'Newer posts', 'twentytwentyone' ),
array(
'span' => array(
'class' => array(),
),
)
)
),
'next_text' => sprintf(
'%s %s',
wp_kses(
__( 'Older posts', 'twentytwentyone' ),
array(
'span' => array(
'class' => array(),
),
)
),
is_rtl() ? twenty_twenty_one_get_icon_svg( 'ui', 'arrow_left' ) : twenty_twenty_one_get_icon_svg( 'ui', 'arrow_right' )
),
)
);
}
}
PK R3ZϼН error_lognu [ [24-Nov-2024 08:56:49 America/Mexico_City] PHP Fatal error: Uncaught Error: Call to undefined function add_filter() in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/template-functions-20241124123239.php:38
Stack trace:
#0 {main}
thrown in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/template-functions-20241124123239.php on line 38
[24-Nov-2024 09:39:15 America/Mexico_City] PHP Fatal error: Uncaught Error: Call to undefined function language_attributes() in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/header.php:16
Stack trace:
#0 {main}
thrown in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/header.php on line 16
[19-Jan-2025 10:05:34 America/Mexico_City] PHP Fatal error: Uncaught Error: Call to undefined function add_action() in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/back-compat.php:24
Stack trace:
#0 {main}
thrown in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/back-compat.php on line 24
[19-Jan-2025 10:07:45 America/Mexico_City] PHP Fatal error: Uncaught Error: Call to undefined function do_action() in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/header.php:20
Stack trace:
#0 {main}
thrown in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/header.php on line 20
[19-Jan-2025 10:15:49 America/Mexico_City] PHP Fatal error: Uncaught Error: Call to undefined function add_filter() in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/template-functions-20241124123239.php:38
Stack trace:
#0 {main}
thrown in /home2/sdektunc/cepali.edu.mx/wp-content/themes/twentytwentyone/inc/template-functions-20241124123239.php on line 38
PK R3Z>! back-compat.phpnu [ ';
printf(
/* translators: %s: WordPress Version. */
esc_html__( 'This theme requires WordPress 5.3 or newer. You are running version %s. Please upgrade.', 'twentytwentyone' ),
esc_html( $GLOBALS['wp_version'] )
);
echo '
';
}
/**
* Prevents the Customizer from being loaded on WordPress versions prior to 5.3.
*
* @since Twenty Twenty-One 1.0
*
* @global string $wp_version WordPress version.
*
* @return void
*/
function twenty_twenty_one_customize() {
wp_die(
sprintf(
/* translators: %s: WordPress Version. */
esc_html__( 'This theme requires WordPress 5.3 or newer. You are running version %s. Please upgrade.', 'twentytwentyone' ),
esc_html( $GLOBALS['wp_version'] )
),
'',
array(
'back_link' => true,
)
);
}
add_action( 'load-customize.php', 'twenty_twenty_one_customize' );
/**
* Prevents the Theme Preview from being loaded on WordPress versions prior to 5.3.
*
* @since Twenty Twenty-One 1.0
*
* @global string $wp_version WordPress version.
*
* @return void
*/
function twenty_twenty_one_preview() {
if ( isset( $_GET['preview'] ) ) { // phpcs:ignore WordPress.Security.NonceVerification
wp_die(
sprintf(
/* translators: %s: WordPress Version. */
esc_html__( 'This theme requires WordPress 5.3 or newer. You are running version %s. Please upgrade.', 'twentytwentyone' ),
esc_html( $GLOBALS['wp_version'] )
)
);
}
}
add_action( 'template_redirect', 'twenty_twenty_one_preview' );
PK R3Zʺ custom-css.phpnu [ tags and can only be interpreted as CSS on the browser.
* Using wp_strip_all_tags() here is sufficient escaping to avoid
* malicious attempts to close and open a ';
}
add_action( 'wp_footer', 'twenty_twenty_one_supports_js' );
/**
* Changes comment form default fields.
*
* @since Twenty Twenty-One 1.0
*
* @param array $defaults The form defaults.
* @return array
*/
function twenty_twenty_one_comment_form_defaults( $defaults ) {
// Adjust height of comment form.
$defaults['comment_field'] = preg_replace( '/rows="\d+"/', 'rows="5"', $defaults['comment_field'] );
return $defaults;
}
add_filter( 'comment_form_defaults', 'twenty_twenty_one_comment_form_defaults' );
/**
* Determines if post thumbnail can be displayed.
*
* @since Twenty Twenty-One 1.0
*
* @return bool
*/
function twenty_twenty_one_can_show_post_thumbnail() {
/**
* Filters whether post thumbnail can be displayed.
*
* @since Twenty Twenty-One 1.0
*
* @param bool $show_post_thumbnail Whether to show post thumbnail.
*/
return apply_filters(
'twenty_twenty_one_can_show_post_thumbnail',
! post_password_required() && ! is_attachment() && has_post_thumbnail()
);
}
/**
* Returns the size for avatars used in the theme.
*
* @since Twenty Twenty-One 1.0
*
* @return int
*/
function twenty_twenty_one_get_avatar_size() {
return 60;
}
/**
* Creates continue reading text.
*
* @since Twenty Twenty-One 1.0
*/
function twenty_twenty_one_continue_reading_text() {
$continue_reading = sprintf(
/* translators: %s: Post title. Only visible to screen readers. */
esc_html__( 'Continue reading %s', 'twentytwentyone' ),
the_title( '' . esc_html__( 'This content is password protected. Please enter a password to view.', 'twentytwentyone' ) . '