831 lines
20 KiB
PHP
831 lines
20 KiB
PHP
<?php
|
|
|
|
add_filter('safe_style_css', function($styles) {
|
|
$styles[] = 'aspect-ratio';
|
|
return $styles;
|
|
});
|
|
|
|
if (! function_exists('blocksy_render_post_author_avatar')) {
|
|
function blocksy_render_post_author_avatar($author) {
|
|
global $blocksy_author_options, $blocksy_meta_args;
|
|
|
|
if ($blocksy_author_options['has_author_avatar'] === 'no') {
|
|
return '';
|
|
}
|
|
|
|
if (! isset($author->ID, $author->user_nicename, $author->display_name)) {
|
|
return '';
|
|
}
|
|
|
|
$result = '';
|
|
|
|
return blocksy_simple_image(
|
|
apply_filters(
|
|
'blocksy:post-meta:author:author-avatar-url',
|
|
blocksy_get_avatar_url([
|
|
'avatar_entity' => $author->ID,
|
|
'size' => intval($blocksy_author_options['avatar_size']) * 2
|
|
])
|
|
),
|
|
[
|
|
'tag_name' => 'a',
|
|
'aspect_ratio' => false,
|
|
'suffix' => 'static',
|
|
'html_atts' => [
|
|
'href' => get_author_posts_url($author->ID),
|
|
'tabindex' => -1
|
|
],
|
|
'has_default_alt' => false,
|
|
'img_atts' => [
|
|
'width' => intval($blocksy_author_options['avatar_size']),
|
|
'height' => intval($blocksy_author_options['avatar_size']),
|
|
'style' => 'height:' . intval($blocksy_author_options['avatar_size']) . 'px',
|
|
'alt' => blocksy_get_avatar_alt_for($author->ID)
|
|
],
|
|
]
|
|
);
|
|
}
|
|
}
|
|
|
|
if (! function_exists('blocksy_render_post_author_details')) {
|
|
function blocksy_render_post_author_details($author) {
|
|
global $blocksy_author_options, $blocksy_meta_args;
|
|
|
|
if (! isset($author->ID, $author->user_nicename, $author->display_name)) {
|
|
return '';
|
|
}
|
|
|
|
$meta_label = $blocksy_meta_args['prefix'] ? blocksy_translate_dynamic(
|
|
$blocksy_author_options['label'],
|
|
$blocksy_meta_args['prefix'] . '_' . $blocksy_author_options['id'] . '_label'
|
|
) : $blocksy_author_options['label'];
|
|
|
|
$result = '';
|
|
|
|
$result .= blocksy_html_tag(
|
|
'a',
|
|
array_merge(
|
|
[
|
|
'class' => 'ct-meta-element-author',
|
|
'href' => esc_url(get_author_posts_url($author->ID, $author->user_nicename)),
|
|
// translators: %s: Author's display name.
|
|
'title' => esc_attr(blocksy_safe_sprintf(__('Posts by %s', 'blocksy'), get_the_author())),
|
|
'rel' => 'author',
|
|
],
|
|
blocksy_schema_org_definitions(
|
|
'author_url',
|
|
[
|
|
'array' => true
|
|
]
|
|
),
|
|
(
|
|
$blocksy_meta_args['meta_type'] === 'label' ? [
|
|
'data-label' => $meta_label
|
|
] : []
|
|
)
|
|
|
|
),
|
|
blocksy_html_tag(
|
|
'span',
|
|
blocksy_schema_org_definitions('author_name', ['array' => true]),
|
|
get_the_author()
|
|
)
|
|
);
|
|
|
|
return $result;
|
|
}
|
|
}
|
|
if (! function_exists('blocksy_render_post_author')) {
|
|
function blocksy_render_post_author($author) {
|
|
global $blocksy_author_options, $blocksy_meta_args;
|
|
|
|
if (! isset($author->ID, $author->user_nicename, $author->display_name)) {
|
|
return '';
|
|
}
|
|
|
|
$result = blocksy_render_post_author_avatar($author);
|
|
|
|
$meta_label = $blocksy_meta_args['prefix'] ? blocksy_translate_dynamic(
|
|
$blocksy_author_options['label'],
|
|
$blocksy_meta_args['prefix'] . '_' . $blocksy_author_options['id'] . '_label'
|
|
) : $blocksy_author_options['label'];
|
|
|
|
if (
|
|
! empty($meta_label)
|
|
&&
|
|
$blocksy_meta_args['meta_type'] === 'label'
|
|
) {
|
|
$result .= blocksy_html_tag(
|
|
'span',
|
|
[],
|
|
esc_html($meta_label)
|
|
);
|
|
}
|
|
|
|
$result .= blocksy_render_post_author_details($author);
|
|
|
|
return $result;
|
|
}
|
|
}
|
|
|
|
if (! function_exists('blocksy_post_meta')) {
|
|
function blocksy_post_meta($post_meta_descriptor = null, $args = []) {
|
|
if (! $post_meta_descriptor && ! is_array($post_meta_descriptor)) {
|
|
$post_meta_descriptor = blocksy_post_meta_defaults([
|
|
[
|
|
'id' => 'author',
|
|
'enabled' => true,
|
|
],
|
|
|
|
[
|
|
'id' => 'comments',
|
|
'enabled' => true,
|
|
],
|
|
|
|
[
|
|
'id' => 'post_date',
|
|
'enabled' => true,
|
|
],
|
|
|
|
[
|
|
'id' => 'updated_date',
|
|
'enabled' => true,
|
|
],
|
|
|
|
[
|
|
'id' => 'categories',
|
|
'enabled' => true,
|
|
]
|
|
]);
|
|
}
|
|
|
|
$args = wp_parse_args(
|
|
$args,
|
|
[
|
|
'class' => '',
|
|
'meta_type' => 'simple',
|
|
'meta_divider' => 'none',
|
|
|
|
'force_icons' => false,
|
|
|
|
'has_term_class' => true,
|
|
|
|
'prefix' => '',
|
|
|
|
'attr' => []
|
|
]
|
|
);
|
|
|
|
$has_any_enabled_element = false;
|
|
|
|
foreach ($post_meta_descriptor as $index => $single_meta) {
|
|
global $post;
|
|
|
|
if (
|
|
$single_meta['id'] === 'author'
|
|
&&
|
|
! isset($single_meta['label'])
|
|
) {
|
|
$post_meta_descriptor[$index]['label'] = __('By', 'blocksy');
|
|
}
|
|
|
|
if (
|
|
(
|
|
$single_meta['id'] === 'post_date'
|
|
||
|
|
$single_meta['id'] === 'updated_date'
|
|
) && ! isset($single_meta['label'])
|
|
) {
|
|
$post_meta_descriptor[$index]['label'] = __('On', 'blocksy');
|
|
}
|
|
|
|
if (
|
|
(
|
|
$single_meta['id'] === 'categories'
|
|
) && ! isset($single_meta['label'])
|
|
) {
|
|
$post_meta_descriptor[$index]['label'] = __('In', 'blocksy');
|
|
}
|
|
|
|
if ($post_meta_descriptor[$index]['enabled']) {
|
|
$has_any_enabled_element = true;
|
|
}
|
|
}
|
|
|
|
if (! $has_any_enabled_element) {
|
|
return '';
|
|
}
|
|
|
|
$default_date_format = get_option('date_format', '');
|
|
|
|
if (! empty($args['class'])) {
|
|
$args['class'] = ' ' . $args['class'];
|
|
}
|
|
|
|
// Author ID
|
|
global $post;
|
|
|
|
if (is_numeric($post)) {
|
|
$post = get_post($post);
|
|
}
|
|
|
|
$user_id = $post->post_author;
|
|
|
|
global $authordata;
|
|
|
|
if (! $authordata) {
|
|
$authordata = get_userdata($user_id);
|
|
}
|
|
|
|
$container_attr = array_merge([
|
|
'class' => 'entry-meta' . $args['class'],
|
|
'data-type' => $args['meta_type'] . ':' . $args['meta_divider']
|
|
], $args['attr']);
|
|
|
|
ob_start();
|
|
|
|
$has_post_date = false;
|
|
|
|
foreach ($post_meta_descriptor as $single_meta) {
|
|
if (! $single_meta['enabled']) {
|
|
continue;
|
|
}
|
|
|
|
if ($single_meta['id'] === 'post_date') {
|
|
$has_post_date = true;
|
|
}
|
|
}
|
|
|
|
foreach ($post_meta_descriptor as $single_meta) {
|
|
if (! $single_meta['enabled']) {
|
|
continue;
|
|
}
|
|
|
|
do_action(
|
|
'blocksy:post-meta:render-meta',
|
|
$single_meta['id'],
|
|
$single_meta,
|
|
$args
|
|
);
|
|
|
|
if (
|
|
$single_meta['id'] === 'author'
|
|
&&
|
|
get_the_author()
|
|
) {
|
|
global $blocksy_author_options, $blocksy_meta_args;
|
|
|
|
$blocksy_author_options = $single_meta;
|
|
$blocksy_meta_args = $args;
|
|
|
|
$meta_label = '';
|
|
|
|
if ($args['meta_type'] === 'label') {
|
|
|
|
$meta_label = $args['prefix'] ? blocksy_translate_dynamic(
|
|
$single_meta['label'],
|
|
$args['prefix'] . '_' . $single_meta['id'] . '_label'
|
|
) : $single_meta['label'];
|
|
|
|
if (! empty($meta_label)) {
|
|
$meta_label = blocksy_html_tag(
|
|
'span',
|
|
[],
|
|
esc_html($meta_label)
|
|
);
|
|
}
|
|
}
|
|
|
|
$author_output = '';
|
|
|
|
if (
|
|
(
|
|
$args['meta_type'] === 'icons'
|
|
||
|
|
$args['force_icons']
|
|
)
|
|
&&
|
|
$single_meta['has_author_avatar'] === 'no'
|
|
) {
|
|
$icon = '<svg width="13" height="13" viewBox="0 0 15 15"><path d="M13.6,1.4c-1.9-1.9-4.9-1.9-6.8,0L2.2,6C2.1,6.1,2,6.3,2,6.5V12l-1.8,1.8c-0.3,0.3-0.3,0.7,0,1C0.3,14.9,0.5,15,0.7,15s0.3-0.1,0.5-0.2L3,13h5.5c0.2,0,0.4-0.1,0.5-0.2l2.7-2.7c0,0,0,0,0,0l1.9-1.9C15.5,6.3,15.5,3.3,13.6,1.4z M8.2,11.6H4.4l1.4-1.4h3.9L8.2,11.6z M12.6,7.2L11,8.9H7.1l3.6-3.6c0.3-0.3,0.3-0.7,0-1C10.4,4,10,4,9.7,4.3L5,9.1c0,0,0,0,0,0l-1.6,1.6V6.8l4.4-4.4c1.3-1.3,3.5-1.3,4.8,0C14,3.7,14,5.9,12.6,7.2C12.6,7.2,12.6,7.2,12.6,7.2z"/></svg>';
|
|
|
|
if (function_exists('blc_get_icon')) {
|
|
$icon = blc_get_icon([
|
|
'icon_descriptor' => blocksy_akg('icon', $single_meta, [
|
|
'icon' => 'blc blc-feather'
|
|
]),
|
|
'icon_container' => false
|
|
]);
|
|
}
|
|
|
|
if (! empty($icon)) {
|
|
$author_output .= trim($icon);
|
|
}
|
|
}
|
|
|
|
$author_output .= apply_filters(
|
|
'blocksy:post_meta:author_output',
|
|
blocksy_render_post_author($authordata),
|
|
$blocksy_author_options['has_author_avatar'] === 'yes',
|
|
$meta_label
|
|
);
|
|
|
|
echo blocksy_html_tag(
|
|
'li',
|
|
array_merge(
|
|
[
|
|
'class' => 'meta-author',
|
|
],
|
|
blocksy_schema_org_definitions(
|
|
'author',
|
|
[
|
|
'array' => true
|
|
]
|
|
)
|
|
),
|
|
$author_output
|
|
);
|
|
}
|
|
|
|
if ($single_meta['id'] === 'post_date') {
|
|
?><li class="meta-date" <?php echo blocksy_schema_org_definitions('publish_date') ?>><?php
|
|
if ($args['meta_type'] === 'icons' || $args['force_icons']) {
|
|
$icon = '<svg width="13" height="13" viewBox="0 0 15 15"><path d="M7.5,0C3.4,0,0,3.4,0,7.5S3.4,15,7.5,15S15,11.6,15,7.5S11.6,0,7.5,0z M7.5,13.6c-3.4,0-6.1-2.8-6.1-6.1c0-3.4,2.8-6.1,6.1-6.1c3.4,0,6.1,2.8,6.1,6.1C13.6,10.9,10.9,13.6,7.5,13.6z M10.8,9.2c-0.1,0.2-0.4,0.4-0.6,0.4c-0.1,0-0.2,0-0.3-0.1L7.2,8.1C7,8,6.8,7.8,6.8,7.5V4c0-0.4,0.3-0.7,0.7-0.7S8.2,3.6,8.2,4v3.1l2.4,1.2C10.9,8.4,11,8.8,10.8,9.2z"/></svg>';
|
|
|
|
if (function_exists('blc_get_icon')) {
|
|
$icon = blc_get_icon([
|
|
'icon_descriptor' => blocksy_akg('icon', $single_meta, [
|
|
'icon' => 'blc blc-clock'
|
|
]),
|
|
'icon_container' => false
|
|
]);
|
|
}
|
|
|
|
echo trim($icon);
|
|
}
|
|
|
|
$meta_label = $args['prefix'] ? blocksy_translate_dynamic(
|
|
$single_meta['label'],
|
|
$args['prefix'] . '_' . $single_meta['id'] . '_label'
|
|
) : $single_meta['label'];
|
|
|
|
if (
|
|
$args['meta_type'] === 'label'
|
|
&&
|
|
!empty($meta_label)
|
|
) {
|
|
echo '<span>' . esc_html($meta_label) . '</span>';
|
|
}
|
|
|
|
$date_format = $single_meta['date_format'];
|
|
|
|
if ($single_meta['date_format_source'] === 'default') {
|
|
$date_format = $default_date_format;
|
|
}
|
|
|
|
echo blocksy_html_tag(
|
|
'time',
|
|
array_merge([
|
|
'class' => 'ct-meta-element-date',
|
|
'datetime' => get_the_date('c')
|
|
], (
|
|
($args['meta_type'] === 'label') ? ([
|
|
// 'data-label' => $meta_label
|
|
]) : []
|
|
), (
|
|
is_customize_preview() ? [
|
|
'data-default-format' => $default_date_format,
|
|
'data-date' => get_the_date('c')
|
|
] : []
|
|
)),
|
|
esc_html(get_the_date($date_format))
|
|
);
|
|
?></li><?php }
|
|
|
|
if (
|
|
$single_meta['id'] === 'updated_date'
|
|
&&
|
|
(
|
|
! $has_post_date
|
|
||
|
|
get_the_modified_date() !== get_the_date()
|
|
)
|
|
) {
|
|
?><li class="meta-updated-date" <?php echo blocksy_schema_org_definitions('modified_date') ?>><?php
|
|
if ($args['meta_type'] === 'icons' || $args['force_icons']) {
|
|
$icon = '<svg width="13" height="13" viewBox="0 0 15 15"><path d="M7.5,0C3.4,0,0,3.4,0,7.5S3.4,15,7.5,15S15,11.6,15,7.5S11.6,0,7.5,0z M7.5,13.6c-3.4,0-6.1-2.8-6.1-6.1c0-3.4,2.8-6.1,6.1-6.1c3.4,0,6.1,2.8,6.1,6.1C13.6,10.9,10.9,13.6,7.5,13.6z M8.2,4v3.5C8.2,7.8,8,8,7.8,8.1L5.1,9.5C5,9.5,4.9,9.5,4.8,9.5c-0.3,0-0.5-0.1-0.6-0.4C4,8.8,4.1,8.4,4.5,8.3l2.4-1.2V4c0-0.4,0.3-0.7,0.7-0.7S8.2,3.6,8.2,4z"/></svg>';
|
|
|
|
if (function_exists('blc_get_icon')) {
|
|
$icon = blc_get_icon([
|
|
'icon_descriptor' => blocksy_akg('icon', $single_meta, [
|
|
'icon' => 'blc blc-clock'
|
|
]),
|
|
'icon_container' => false
|
|
]);
|
|
}
|
|
|
|
echo trim($icon);
|
|
}
|
|
|
|
$meta_label = $args['prefix'] ? blocksy_translate_dynamic(
|
|
$single_meta['label'],
|
|
$args['prefix'] . '_' . $single_meta['id'] . '_label'
|
|
) : $single_meta['label'];
|
|
|
|
if (
|
|
$args['meta_type'] === 'label'
|
|
&&
|
|
!empty($meta_label)
|
|
) {
|
|
echo '<span>' . esc_html($meta_label) . '</span>';
|
|
}
|
|
|
|
$date_format = $single_meta['date_format'];
|
|
|
|
if ($single_meta['date_format_source'] === 'default') {
|
|
$date_format = $default_date_format;
|
|
}
|
|
|
|
$proper_updated_date = intval(get_the_modified_date('U')) < intval(
|
|
get_the_date('U')
|
|
) ? get_the_date($date_format) : get_the_modified_date($date_format);
|
|
|
|
$proper_updated_date_initial = intval(get_the_modified_date('U')) < intval(
|
|
get_the_date('U')
|
|
) ? get_the_date('c') : get_the_modified_date('c');
|
|
|
|
echo blocksy_html_tag(
|
|
'time',
|
|
|
|
array_merge([
|
|
'class' => 'ct-meta-element-date',
|
|
'datetime' => $proper_updated_date_initial
|
|
], (
|
|
$args['meta_type'] === 'label' ? [
|
|
// 'data-label' => $meta_label
|
|
] : []
|
|
), (
|
|
is_customize_preview() ? [
|
|
'data-default-format' => $default_date_format,
|
|
'data-date' => $proper_updated_date_initial
|
|
] : []
|
|
)),
|
|
|
|
esc_html($proper_updated_date)
|
|
);
|
|
?></li><?php }
|
|
|
|
if ($single_meta['id'] === 'comments' && get_comments_number() > 0) {
|
|
?><li class="meta-comments"><?php
|
|
if ($args['meta_type'] === 'icons' || $args['force_icons']) {
|
|
$icon = '<svg width="13" height="13" viewBox="0 0 15 15"><path d="M13.7,14.8L10.9,12H2.2C1,12,0,11,0,9.8l0-7.5C0,1,1,0,2.2,0l10.5,0C14,0,15,1,15,2.2v12c0,0.3-0.2,0.6-0.5,0.7c-0.1,0-0.2,0.1-0.3,0.1C14.1,15,13.9,14.9,13.7,14.8zM2.2,1.5c-0.4,0-0.8,0.3-0.8,0.8v7.5c0,0.4,0.3,0.8,0.8,0.8h9c0.2,0,0.4,0.1,0.5,0.2l1.7,1.7V2.2c0-0.4-0.3-0.8-0.8-0.8H2.2z"/></svg>';
|
|
|
|
if (function_exists('blc_get_icon')) {
|
|
$icon = blc_get_icon([
|
|
'icon_descriptor' => blocksy_akg('icon', $single_meta, [
|
|
'icon' => 'blc blc-comments'
|
|
]),
|
|
'icon_container' => false
|
|
]);
|
|
}
|
|
|
|
echo trim($icon);
|
|
}
|
|
|
|
?><a href="<?php echo esc_attr(get_permalink()); ?>#comments"><?php
|
|
// translators: text for one review
|
|
$singular_text = __('1 Comment', 'blocksy');
|
|
// translators: % refers to the number of comments, when more than 1
|
|
$plural_text = __('% Comments', 'blocksy');
|
|
|
|
if ( get_post_type() === 'product' ) {
|
|
// translators: text for one review
|
|
$singular_text = __('1 Review', 'blocksy');
|
|
// translators: % refers to the number of reviews, when more than 1
|
|
$plural_text = __('% Reviews', 'blocksy');
|
|
}
|
|
|
|
if ($args['meta_type'] === 'icons' && !$args['force_icons']) {
|
|
$singular_text = '1';
|
|
$plural_text = '%';
|
|
}
|
|
|
|
echo wp_kses_post(get_comments_number_text(
|
|
'',
|
|
$singular_text,
|
|
$plural_text
|
|
));
|
|
?></a></li><?php }
|
|
|
|
$maybe_taxonomy = null;
|
|
|
|
if ($single_meta['id'] === 'categories') {
|
|
$matching_taxonomy = blocksy_maybe_get_matching_taxonomy(
|
|
get_post_type()
|
|
);
|
|
|
|
if ($matching_taxonomy) {
|
|
$maybe_taxonomy = blocksy_akg('taxonomy', $single_meta, null);
|
|
|
|
if (! $maybe_taxonomy) {
|
|
$maybe_taxonomy = $matching_taxonomy;
|
|
}
|
|
}
|
|
}
|
|
|
|
if (
|
|
$single_meta['id'] === 'categories'
|
|
&&
|
|
$maybe_taxonomy
|
|
&&
|
|
blocksy_get_categories_list([
|
|
'taxonomy' => $maybe_taxonomy
|
|
])
|
|
) {
|
|
if (! isset($single_meta['style'])) {
|
|
$single_meta['style'] = 'simple';
|
|
}
|
|
|
|
$divider = '';
|
|
|
|
if ($single_meta['style'] === 'simple') {
|
|
$divider = ', ';
|
|
}
|
|
|
|
if ($single_meta['style'] === 'underline') {
|
|
$divider = ' / ';
|
|
}
|
|
|
|
echo '<li class="meta-categories" data-type="' . esc_attr($single_meta['style']) . '">';
|
|
|
|
if ($args['meta_type'] === 'icons' || $args['force_icons']) {
|
|
$icon = '<svg width="13" height="13" viewBox="0 0 15 15"><path d="M14.4,1.2H0.6C0.3,1.2,0,1.5,0,1.9V5c0,0.3,0.3,0.6,0.6,0.6h0.6v7.5c0,0.3,0.3,0.6,0.6,0.6h11.2c0.3,0,0.6-0.3,0.6-0.6V5.6h0.6C14.7,5.6,15,5.3,15,5V1.9C15,1.5,14.7,1.2,14.4,1.2z M12.5,12.5h-10V5.6h10V12.5z M13.8,4.4H1.2V2.5h12.5V4.4z M5.6,7.5c0-0.3,0.3-0.6,0.6-0.6h2.5c0.3,0,0.6,0.3,0.6,0.6S9.1,8.1,8.8,8.1H6.2C5.9,8.1,5.6,7.8,5.6,7.5z"/></svg>';
|
|
|
|
if (function_exists('blc_get_icon')) {
|
|
$icon = blc_get_icon([
|
|
'icon_descriptor' => blocksy_akg('icon', $single_meta, [
|
|
'icon' => 'blc blc-box'
|
|
]),
|
|
'icon_container' => false
|
|
]);
|
|
}
|
|
|
|
echo trim($icon);
|
|
}
|
|
|
|
if (
|
|
$args['meta_type'] === 'label'
|
|
&&
|
|
! empty($single_meta['label'])
|
|
) {
|
|
echo '<span>' . esc_html($single_meta['label']) . '</span>';
|
|
}
|
|
|
|
echo blocksy_get_categories_list([
|
|
'between' => $divider,
|
|
'taxonomy' => $maybe_taxonomy,
|
|
'has_term_class' => $args['has_term_class']
|
|
]);
|
|
|
|
echo '</li>';
|
|
}
|
|
}
|
|
|
|
$to_return = ob_get_contents();
|
|
|
|
ob_end_clean();
|
|
|
|
if (empty(trim($to_return))) {
|
|
return '';
|
|
}
|
|
|
|
ob_start();
|
|
|
|
echo '<ul ' . blocksy_attr_to_html($container_attr) . ' ' . blocksy_schema_org_definitions('blog') . '>';
|
|
|
|
/**
|
|
* Note to code reviewers: This line doesn't need to be escaped.
|
|
* Var $to_return used here has the value escaped properly.
|
|
*/
|
|
echo trim(preg_replace('/\s\s+/', ' ', apply_filters(
|
|
'blocksy:post-meta:items',
|
|
$to_return,
|
|
$post_meta_descriptor,
|
|
$args
|
|
)));
|
|
|
|
echo '</ul>';
|
|
|
|
return ob_get_clean();
|
|
}
|
|
}
|
|
|
|
if (! function_exists('blocksy_maybe_get_matching_taxonomy')) {
|
|
function blocksy_maybe_get_matching_taxonomy($post_type, $is_category = true) {
|
|
$category = $is_category ? 'category' : 'post_tag';
|
|
|
|
if ($post_type === 'product') {
|
|
$category = $is_category ? 'product_cat' : 'product_tag';
|
|
}
|
|
|
|
if (
|
|
$post_type !== 'product'
|
|
&&
|
|
$post_type !== 'post'
|
|
) {
|
|
$taxonomies = array_values(array_diff(
|
|
get_object_taxonomies($post_type),
|
|
['post_format']
|
|
));
|
|
|
|
if (count($taxonomies) > 0) {
|
|
$category = null;
|
|
|
|
foreach ($taxonomies as $single_taxonomy) {
|
|
$taxonomy_object = get_taxonomy($single_taxonomy);
|
|
|
|
if (! $taxonomy_object->public) {
|
|
continue;
|
|
}
|
|
|
|
if (
|
|
$is_category && $taxonomy_object->hierarchical
|
|
||
|
|
! $is_category && ! $taxonomy_object->hierarchical
|
|
) {
|
|
$category = $single_taxonomy;
|
|
break;
|
|
}
|
|
}
|
|
} else {
|
|
return null;
|
|
}
|
|
}
|
|
|
|
if (! get_taxonomy($category)) {
|
|
return null;
|
|
}
|
|
|
|
return $category;
|
|
}
|
|
}
|
|
|
|
if (! function_exists('blocksy_get_the_term_list')) {
|
|
function blocksy_get_the_term_list($args = []) {
|
|
$args = wp_parse_args($args, [
|
|
'post_id' => null,
|
|
'taxonomy' => null,
|
|
'before' => '',
|
|
'sep' => '',
|
|
'after' => '',
|
|
'before_each' => '',
|
|
'has_term_class' => true
|
|
]);
|
|
|
|
$terms = get_the_terms($args['post_id'], $args['taxonomy']);
|
|
|
|
if (is_wp_error($terms)) {
|
|
return '';
|
|
}
|
|
|
|
if (empty($terms)) {
|
|
return false;
|
|
}
|
|
|
|
$links = [];
|
|
|
|
foreach ($terms as $term) {
|
|
$link = get_term_link($term, $args['taxonomy']);
|
|
|
|
if (is_wp_error($link)) {
|
|
return '';
|
|
}
|
|
|
|
$link_attr = [
|
|
'href' => $link,
|
|
'rel' => 'tag'
|
|
];
|
|
|
|
if ($args['has_term_class']) {
|
|
$link_attr['class'] = 'ct-term-' . $term->term_id;
|
|
}
|
|
|
|
$links[] = blocksy_html_tag(
|
|
'a',
|
|
$link_attr,
|
|
$args['before_each'] . $term->name
|
|
);
|
|
}
|
|
|
|
return $args['before'] . implode($args['sep'], $links) . $args['after'];
|
|
}
|
|
}
|
|
|
|
if (! function_exists('blocksy_get_categories_list')) {
|
|
function blocksy_get_categories_list($args = []) {
|
|
$args = wp_parse_args($args, [
|
|
'between' => '',
|
|
'taxonomy' => null,
|
|
'before_each' => '',
|
|
'has_term_class' => true
|
|
]);
|
|
|
|
global $post;
|
|
|
|
if (get_post_type() === 'elementor_library') {
|
|
return '';
|
|
}
|
|
|
|
if (get_post_type() === 'brizy_template') {
|
|
return '';
|
|
}
|
|
|
|
$post_type = get_post_type($post);
|
|
|
|
if (! $args['taxonomy']) {
|
|
$args['taxonomy'] = blocksy_maybe_get_matching_taxonomy($post_type);
|
|
}
|
|
|
|
return blocksy_get_the_term_list([
|
|
'post_id' => $post,
|
|
'taxonomy' => $args['taxonomy'],
|
|
'sep' => $args['between'],
|
|
'before_each' => $args['before_each'],
|
|
'has_term_class' => $args['has_term_class']
|
|
]);
|
|
}
|
|
}
|
|
|
|
function blocksy_post_meta_defaults($opts = [], $args = []) {
|
|
$args = wp_parse_args(
|
|
$args,
|
|
[]
|
|
);
|
|
|
|
$defaults = [
|
|
[
|
|
'id' => 'author',
|
|
'enabled' => false,
|
|
'label' => __('By', 'blocksy'),
|
|
'has_author_avatar' => 'no',
|
|
'avatar_size' => 25
|
|
],
|
|
|
|
[
|
|
'id' => 'post_date',
|
|
'enabled' => false,
|
|
'label' => __('On', 'blocksy'),
|
|
'date_format_source' => 'default',
|
|
'date_format' => 'M j, Y'
|
|
],
|
|
|
|
[
|
|
'id' => 'updated_date',
|
|
'enabled' => false,
|
|
'label' => __('On', 'blocksy'),
|
|
'date_format_source' => 'default',
|
|
'date_format' => 'M j, Y'
|
|
],
|
|
|
|
[
|
|
'id' => 'categories',
|
|
'enabled' => false,
|
|
'label' => __('In', 'blocksy'),
|
|
'style' => 'simple'
|
|
],
|
|
|
|
[
|
|
'id' => 'comments',
|
|
'enabled' => false,
|
|
]
|
|
];
|
|
|
|
$result = [];
|
|
|
|
foreach ($defaults as $index => $single_meta) {
|
|
$added = false;
|
|
|
|
foreach ($opts as $single_opt) {
|
|
if ($single_meta['id'] !== $single_opt['id']) {
|
|
continue;
|
|
}
|
|
|
|
$future_layer = wp_parse_args($single_opt, $single_meta);
|
|
|
|
if (! $future_layer['enabled']) {
|
|
// continue;
|
|
}
|
|
|
|
$result[] = $future_layer;
|
|
$added = true;
|
|
}
|
|
|
|
if (! $added) {
|
|
$result[] = $single_meta;
|
|
}
|
|
}
|
|
|
|
return $result;
|
|
}
|
|
|