'.make_clickable($temp).'';
}
else{
$fields .= ''.$pieces[0].''.make_clickable($pieces[1]).'';
}
}
}
$html = '';
//if we have any custom fields filled
if(strlen($fields)){
$html =
'
';
}
return $html;
}
}
if(!function_exists( 'bicycleshop_cpt_meta_data' )){
/**
* Prints internet address and custom fields of post
*
* @param string $content current text content from editor
*
* @return string
*/
function bicycleshop_cpt_meta_data( $content ){
return $content . bicycleshop_cpt_meta_fields();
}
}
if(!function_exists( 'bicycleshop_cpt_social' )){
/**
* Returns social components for item list
*
* @param $link - permalink of item
* @param $title - title of item
*
* @return string
*
*/
function bicycleshop_cpt_social( $link, $title ){
//no socials for protected items
if ( post_password_required() ) {
return '';
}
ob_start();
echo ''; //by PHP so we could use :empty in CSS
//share icons from AddToAny
if ( function_exists( 'ADDTOANY_SHARE_SAVE_KIT' ) ) {
ADDTOANY_SHARE_SAVE_KIT( array( 'linkname' => $title, 'linkurl' => $link ) );
}
//like plugin
if( function_exists('dot_irecommendthis') ){
dot_irecommendthis();
};
echo '
';
//get output
$output = ob_get_contents();
ob_end_clean();
return $output;
}
}
/**
* @param array $item all raw item settings
* @param array $collector item settings useful to generate HTML
* @param int $columns
* @param int $bricks_max_width
* @param int $brick_margin
* @param int $brick_proportion
*
* @return array of all image sizes (poster, brick, thumb)
*/
function bicycleshop_get_gallery_item_images($item, $collector, $columns, $bricks_max_width, $brick_margin, $brick_proportion = 0){
global $bicycleshop_a13;
$src = '';
$type = $item['type'];
$is_external = $collector['attachment_type'] === 'external';
//prepare vars
if( $is_external ){
//video link
$attachment_id = $item['videolink_attachment_id'];
$image = $item['videolink_poster'];
}
//internal
else{
if( $type === 'image' ){
$attachment_id = $item['id'];
$image = $item['url'];
}
//video
else{
$attachment_id = get_post_thumbnail_id( $item['id'] );
$image = '';
}
}
/* POSTER */
//try getting attachment
if( $attachment_id ){
$attachment = wp_get_attachment_image_src( $attachment_id, 'full' );
//only if we have attachment
if( is_array($attachment) ){
$src = $attachment[0];
}
}
//attachment failed
if(!strlen($src)){
if(strlen($image)){
$poster = $image;
}
//$image failed
else{
if( $is_external ){
if( $collector[ 'video_type' ] === 'youtube' ){
$poster = '//img.youtube.com/vi/'.$collector[ 'video_id' ].'/maxresdefault.jpg';
}
//vimeo
elseif( $collector[ 'video_type' ] === 'vimeo' ){
$poster = get_theme_file_uri( 'images/holders/vimeo.png' );
}
//something else?
else{
$poster = get_theme_file_uri( 'images/holders/video.png');
}
}
else{
if( $type === 'image'){
$poster = get_theme_file_uri( 'images/holders/photo.png');
}
//video
else{
$poster = get_theme_file_uri( 'images/holders/video.png');
}
}
}
}
//use attachment
else{
$poster = $src;
}
/* THUMB */
//try getting attachment
if( $attachment_id ){
$attachment = wp_get_attachment_image_src( $attachment_id, 'thumbnail' );
//only if we have attachment
if( is_array($attachment) ){
$src = $attachment[0];
}
}
//attachment failed
if(!strlen($src)){
if(strlen($image)){
$thumb = $image;
}
//$image failed
else{
if( $is_external ){
if( $collector[ 'video_type' ] === 'youtube' ){
$thumb = '//img.youtube.com/vi/'.$collector[ 'video_id' ].'/default.jpg';
}
//vimeo
elseif( $collector[ 'video_type' ] === 'vimeo' ){
$thumb = get_theme_file_uri( 'images/holders/vimeo_150x100.png');
}
//something else?
else{
$thumb = get_theme_file_uri( 'images/holders/video_150x100.png');
}
}
else{
if( $type === 'image'){
$thumb = get_theme_file_uri( 'images/holders/photo_150x100.png');
}
//video
else{
$thumb = get_theme_file_uri( 'images/holders/video_150x100.png');
}
}
}
}
//use attachment
else{
$thumb = $src;
}
//reset $src
$src = '';
/* BRICK */
/* brick_size can't be bigger then columns for calculations */
$brick_size = $collector['ratio_x'];
$brick_size = strlen($brick_size)? min((int)$brick_size, $columns) : 1;
$ratio = $brick_size/$columns;
//many possible sizes, but one RULE to rule them all
$image_width = ceil($ratio * (int)$bricks_max_width - (1-$ratio) * (int)$brick_margin);
$height_proportion = 0;
//prepare proportion from string
if($brick_proportion !== 0){
//break string to parts
$brick_proportion = explode('/', $brick_proportion);
//check if we have two parts exactly
if(sizeof($brick_proportion) === 2 && is_numeric($brick_proportion[0]) && is_numeric($brick_proportion[1]) ){
//make sure second part is not 0
if((int)$brick_proportion[1]===0){
$brick_proportion = 0;
}
else{
//calculate proper float
$brick_proportion = ($brick_proportion[0]/$brick_proportion[1]);
}
}
else{
$brick_proportion = 0;
}
//prepare height proportion
$height_proportion = $brick_proportion === 0 ? 0 : 1/$brick_proportion;
}
$image_height = $image_width*$height_proportion;
$quality = (int)$bicycleshop_a13->get_option( 'a13ir_image_quality' );
$quality = ($quality > 0 && $quality <= 100) ? $quality : 90;
$size = array( $image_width, $image_height, 'sktwb_image' => true, 'crop' => $image_height > 0, 'quality' => $quality );
//try getting attachment
if( $attachment_id ){
$attachment = wp_get_attachment_image_src( $attachment_id, $size );
//only if we have attachment
if( is_array($attachment) ){
$src = $attachment[0];
}
}
//attachment failed
if(!strlen($src)){
if(strlen($image)){
$brick = $image;
}
//$image failed
else{
if( $is_external ){
if( $collector[ 'video_type' ] === 'youtube' ){
$brick = '//img.youtube.com/vi/'.$collector[ 'video_id' ].'/hqdefault.jpg';
}
//vimeo
elseif( $collector[ 'video_type' ] === 'vimeo' ){
$brick = get_theme_file_uri( 'images/holders/vimeo_640x360.png');
}
//something else?
else{
$brick = get_theme_file_uri( 'images/holders/video_640x360.png');
}
}
else{
if( $type === 'image'){
$brick = get_theme_file_uri( 'images/holders/photo.png');
}
//video
else{
$brick = get_theme_file_uri( 'images/holders/video_640x360.png');
}
}
}
}
//use attachment
else{
$brick = $src;
}
return array($poster, $brick, $thumb);
}
if(!function_exists('bicycleshop_cpt_list_navigation')){
/**
* Displays page navigation for custom post types
*
* @param bool|WP_Query $query
*/
function bicycleshop_cpt_list_navigation( $query = false ){
if($query === false){
global $wp_query;
$query = $wp_query;
}
// Set up paginated links.
$links = paginate_links( apply_filters( 'bicycleshop_pagination_args', array(
'add_args' => '',
//try to get "paged" for subpages, and page for front page
'current' => get_query_var( 'paged' ) ? intval( get_query_var( 'paged' ) ) : ( get_query_var( 'page' ) ? intval( get_query_var( 'page' ) ) : 1 ),
'total' => $query->max_num_pages,
'prev_text' => '←',
'next_text' => '→',
'type' => 'list',
'end_size' => 3,
'mid_size' => 3
) ) );
if ( $links ) {
echo wp_kses_post( _navigation_markup( $links, 'posts-navigation' ) );
}
}
}
if(!function_exists('bicycleshop_loop_pagination')){
/**
* change pagination to default WordPress style
*
* @param array $args arguments for pagination
*
* @return array
*/
function bicycleshop_loop_pagination($args){
$args['type'] = 'plain';
$args['prev_text'] = _x( 'Previous', 'previous product', 'bicycleshop' );
$args['next_text'] = _x( 'Next', 'next product', 'bicycleshop' );
return $args;
}
}
add_filter('bicycleshop_pagination_args', 'bicycleshop_loop_pagination' );
if(!function_exists('bicycleshop_make_media_collection')){
/**
* Collection of gallery items. Used to print all media used in album or work
* JS can feed on it to create custom layouts
*
* @param null|int $id post ID
* @param array $args gallery arguments
*/
function bicycleshop_make_media_collection($id = null, $args = array()){
if(is_null($id)){
$id = get_the_ID();
}
$value = get_post_meta( $id, '_images_n_videos' , true);
$order = get_post_meta( $id, '_order', true);
?>
bicycleshop_get_meta( '_proofing', $post_id ) === 'on';
if($proofing_enabled){
$proofing_meta = get_post_meta( $post_id, '_images_n_videos_proofing', true );
$proofing_array = strlen( $proofing_meta ) === 0 ? array() : json_decode( $proofing_meta, true );
}
if ( $media_count ) {
//collect all ids
//and filter out external media(video links, audio links)
$ids = array();
$externals = array();
for ( $i = 0; $i < $media_count; $i ++ ) {
$item_id = $images_videos_array[ $i ]['id'];
if ( $item_id === 'external' ) {
$externals[] = $images_videos_array[ $i ];
}
//in case of WPML make sure to get localized version
$ids[] = apply_filters( 'wpml_object_id', $images_videos_array[ $i ]['id'], 'post', true );
}
//process items from media library
$args = array(
'post_type' => 'attachment',
'posts_per_page' => PHP_INT_MAX,
'post_status' => 'any',
'post_parent' => null,
'post__in' => $ids,
'orderby' => 'post__in'
);
$attachments = get_posts( $args );
$attachments = array_map( 'wp_prepare_attachment_for_js', $attachments );
//remove any empty, false elements
$attachments = array_filter( $attachments );
wp_reset_postdata();
//process items from external links
bicycleshop_prepare_external_media( $externals );
//combine internal and external media back again
//also check for deleted items
for ( $i = 0; $i < $media_count; $i ++ ) {
//in case of WPML make sure to get localized version
$item_id = apply_filters( 'wpml_object_id', $images_videos_array[ $i ]['id'], 'post', true );
if ( $item_id === 'external' ) {
//first we push around to make space for us
array_splice( $attachments, $i, 0, 'whatever' );
//and now we push our thing
$attachments[ $i ] = array_shift( $externals );
} elseif ( ! isset( $attachments[ $i ] ) || ( (int) $item_id !== (int) $attachments[ $i ]['id'] ) ) {
//there is something wrong, probably media was deleted
array_splice( $attachments, $i, 0, 'deleted' );
} else{
//we push additional info to real attachments
//These are options from theme
$type = $images_videos_array[ $i ][ 'type' ];
if( $type === 'image' ){
$attachments[ $i ][ 'bg_color' ] = $images_videos_array[ $i ][ 'image_bg_color' ];
$attachments[ $i ][ 'ratio_x' ] = $images_videos_array[ $i ][ 'image_ratio_x' ];
$attachments[ $i ][ 'alt_link' ] = $images_videos_array[ $i ][ 'image_link' ];
$attachments[ $i ][ 'alt_link_target' ] = isset($images_videos_array[ $i ][ 'image_link_target' ])? $images_videos_array[ $i ][ 'image_link_target' ] : '';
$attachments[ $i ][ 'product_id' ] = isset($images_videos_array[ $i ][ 'image_product_id' ])? $images_videos_array[ $i ][ 'image_product_id' ] : '';
$attachments[ $i ][ 'filter_tags' ] = isset($images_videos_array[ $i ][ 'image_tags' ])? $images_videos_array[ $i ][ 'image_tags' ] : '';
} elseif( $type === 'video' ){
$attachments[ $i ][ 'autoplay' ] = $images_videos_array[ $i ][ 'video_autoplay' ];
$attachments[ $i ][ 'ratio_x' ] = $images_videos_array[ $i ][ 'video_ratio_x' ];
$attachments[ $i ][ 'filter_tags' ] = isset($images_videos_array[ $i ][ 'video_tags' ])? $images_videos_array[ $i ][ 'video_tags' ] : '';
}
if($proofing_enabled) {
//settings from admin settings
$attachments[ $i ]['proofing_id'] = isset( $images_videos_array[ $i ][$type.'_proofing_id'] ) ? $images_videos_array[ $i ][$type.'_proofing_id'] : '';
//settings provided by user
$proofing_record = isset( $proofing_array[ $images_videos_array[ $i ]['id'] ] ) ? $proofing_array[ $images_videos_array[ $i ]['id'] ] : null;
$attachments[ $i ]['proofing_checked'] = ( isset( $proofing_record ) && array_key_exists( 'approved', $proofing_record ) ) ? $proofing_record['approved'] : 0;
$attachments[ $i ]['proofing_comment'] = ( isset( $proofing_record ) && array_key_exists( 'comment', $proofing_record ) ) ? $proofing_record['comment'] : '';
}
}
}
}
}
return $attachments;
}
/**
* Prepares external attachments
*
* @param array $items external items list
*/
function bicycleshop_prepare_external_media(&$items){
global $bicycleshop_a13;
$proofing_enabled = $bicycleshop_a13->bicycleshop_get_meta( '_proofing' ) === 'on';
$proofing_array = array();
if($proofing_enabled){
$proofing_meta = get_post_meta( get_the_ID(), '_images_n_videos_proofing', true );
$proofing_array = strlen( $proofing_meta ) === 0 ? array() : json_decode( $proofing_meta, true );
}
/** @noinspection PhpUnusedLocalVariableInspection */
$audio_icon = wp_mime_type_icon('audio');
/** @noinspection PhpUnusedLocalVariableInspection */
$video_icon = wp_mime_type_icon('video');
foreach($items as &$item){
$type = $item['type'];
$mime = substr($type, 0, -4); //-'link', result in "video" or "audio"
$title = $item[$type.'_title'];
$link = $item[$type.'_link'];
$id = $item[$type.'_attachment_id'];
//prepare args that will be used to generate gallery HTML
$item['filename'] = (empty($title)? $link : $title); //title is more favorable
//CAUTION! overwrite of type here!
$item['type'] = $mime; //type and subtype are switched kind of in compare to default WP Media library
$item['subtype'] = $type;
$item['icon'] = ${$mime.'_icon'};
//thumb of item
if(!empty($id)){
list( $src, $width, $height ) = wp_get_attachment_image_src( $id, 'thumbnail' );
$item['thumb'] = compact( 'src', 'width', 'height' );
}
else{
$width = 48;
$height = 64;
$src = $item['icon'];
$item['thumb'] = compact( 'src', 'width', 'height' );
}
if($proofing_enabled) {
//settings provided by user
$proofing_record = isset( $proofing_array[ $link ] ) ? $proofing_array[ $link ] : null;
$item['proofing_checked'] = ( isset( $proofing_record ) && array_key_exists( 'approved', $proofing_record ) ) ? $proofing_record['approved'] : 0;
$item['proofing_comment'] = ( isset( $proofing_record ) && array_key_exists( 'comment', $proofing_record ) ) ? $proofing_record['comment'] : '';
}
}
unset($item);
}
/**
* Prepares front-end gallery ready to display
*
* @param array $attachments all items with settings
* @param string $order order of items
* @param int $id post ID
*
* @param array $args gallery arguments
*
* @return string HTML of gallery
*/
function bicycleshop_prepare_frontend_gallery_html( $attachments, $order, $id, $args ){
if( $order === 'DESC' ){
$attachments = array_reverse( $attachments );
}
elseif( $order === 'random' ){
shuffle( $attachments );
}
//for galleries that are not bricks
$default_args = array(
'show_desc' => 'on',
'proofing' => 'off',
'socials' => 'off',
'proportion' => '0',
'margin' => '5px',
'max_width' => '1920px',
'columns' => '3',
);
$args = wp_parse_args($args, $default_args);
ob_start();
if ( $attachments ) {
$columns = $args['columns'];
$bricks_max_width = $args['max_width'];
$brick_margin = $args['margin'];
$brick_proportion = $args['proportion'];
$proofing_enabled = $args['proofing'] === 'on';
foreach ( $attachments as $item ) {
//skip deleted items
if( !is_array($item) && $item === 'deleted' ){
continue;
}
//audio type currently not fully supported, so we skip
elseif( is_array($item) && $item['type'] === 'audio' ){
continue;
}
else{
$type = $item['type'];
$is_link = false;
$collector['type'] = $item[ 'type' ];
// external video like YT, Vimeo
if ( $item['id'] === 'external' ) {
$collector[ 'attachment_type' ]= 'external';
$collector[ 'id' ] = $item['videolink_attachment_id'];
$collector[ 'src' ] = $item['videolink_link']; //link to video that will open normally in browser
$collector[ 'title' ] = $item['videolink_title']; //easy
$collector[ 'description' ] = $item['videolink_desc']; //easy
$collector[ 'ratio_x' ] = $item['videolink_ratio_x']; //for bricks theme
$collector[ 'autoplay' ] = $item['videolink_autoplay']; //easy
$collector[ 'filter_tags' ] = isset($item['videolink_tags'])? $item['videolink_tags'] : ''; //easy
//video details
$temp = bicycleshop_detect_movie( $item['videolink_link'] );
$collector[ 'video_type' ] = $temp[ 'type' ]; //vimeo/youtube
$collector[ 'video_id' ] = $temp[ 'id' ]; //id of movie. Number of vimeo and alpha-num string for YouTube
$collector[ 'video_player' ] = bicycleshop_get_movie_link( $temp ); //Video API address
//prepare images
list(
$collector[ 'main-image' ],
$collector[ 'brick_image' ],
$collector[ 'thumb' ]
) = bicycleshop_get_gallery_item_images($item, $collector, $columns, $bricks_max_width, $brick_margin, $brick_proportion);
$collector['alt_attr'] = esc_attr(get_post_meta( $item['id'], '_wp_attachment_image_alt', true));
if($proofing_enabled) {
$collector['proofing_id'] = isset( $item['videolink_proofing_id'] ) ? $item['videolink_proofing_id'] : '';
$collector['proofing_checked'] = $item['proofing_checked'];
$collector['proofing_comment'] = $item['proofing_comment'];
}
}
//from media library
else{
$collector[ 'attachment_type' ]= 'internal';
$collector[ 'id' ] = $item['id']; //attachment id
$collector[ 'src' ] = $item['url'];
$collector[ 'title' ] = $item['title'];
$collector[ 'description' ] = $item['description'];
$collector[ 'ratio_x' ] = $item['ratio_x'];
$collector[ 'filter_tags' ] = $item['filter_tags'];
if($proofing_enabled) {
$collector['proofing_id'] = $item['proofing_id'];
$collector['proofing_checked'] = $item['proofing_checked'];
$collector['proofing_comment'] = $item['proofing_comment'];
}
//get type sensitive values
if( $type === 'image' ){
$collector['bg_color'] = $item['bg_color'];
$collector['product_id'] = $item['product_id'];
$collector['alt_attr'] = esc_attr(get_post_meta( $item['id'], '_wp_attachment_image_alt', true));
//prepare images
list(
$collector[ 'main-image' ],
$collector[ 'brick_image' ],
$collector[ 'thumb' ]
) = bicycleshop_get_gallery_item_images($item, $collector, $columns, $bricks_max_width, $brick_margin, $brick_proportion);
//if there is alternative link
if( strlen( $item['alt_link'] ) ){
$collector[ 'src' ] = $item['alt_link'];
$is_link = true;
}
$collector['link_target'] = $item['alt_link_target'];
}
elseif( $type === 'video' ){
$collector[ 'autoplay' ] = $item['autoplay'];
$collector[ 'video_type' ] = 'html5';
$collector[ 'video_id' ] = $collector[ 'src' ];
$collector[ 'video_player' ] = $collector[ 'src' ];
//prepare images
list(
$collector[ 'main-image' ],
$collector[ 'brick_image' ],
$collector[ 'thumb' ]
) = bicycleshop_get_gallery_item_images($item, $collector, $columns, $bricks_max_width, $brick_margin, $brick_proportion);
$collector['alt_attr'] = esc_attr(get_post_meta( $item['id'], '_wp_attachment_image_alt', true));
//poster for lightbox to use
$collector[ 'poster' ] = $collector['main-image'];
}
}
//classes of item
$collector[ 'item_class' ] = 'gallery-item'
.' type-'.$type
.' subtype-'.$item['subtype']
.($is_link? ' link' : '')
;
}
//check for animated gifs
$file_type = wp_check_filetype( $collector[ 'main-image' ] );
//if it is gif then it is probably animated gif, so lets use original file
if( $file_type['type'] === 'image/gif'){
$collector[ 'brick_image' ] = $collector[ 'main-image' ];
}
bicycleshop_frontend_gallery_item_html( $collector, $id, $args );
//be safe
unset($collector);
}
}
$output = ob_get_contents();
ob_end_clean();
return $output;
}
/**
* Helper to prepare each gallery item to display in front-end
*
* @param array $collector item settings useful to generate HTML
* @param int $post_id ID of post that items are added to
* @param array $args gallery arguments
*/
function bicycleshop_frontend_gallery_item_html( $collector, $post_id, $args ){
global $bicycleshop_a13;
static $id = 0;
$id++;
$proofing_enabled = $args['proofing'] === 'on';
$not_needed = array( 'src', 'title', 'description', 'attachment_type', 'item_class', 'type', 'video_id', 'filter_tags', 'product_id', 'proofing_comment' );
//no need for some attributes in case of html
if( $collector[ 'type' ] === 'image' ){
$not_needed[] = 'autoplay';
}
$data_attr_list = array_diff_key($collector, array_flip($not_needed) );
//add comment for proofing
if($proofing_enabled){
$data_attr_list['proofing_comment'] = strlen($collector[ 'proofing_comment' ])? 1 : 0;
}
//construct data attributes
$data_attr = '';
foreach( $data_attr_list as $attr => $val ){
$data_attr .= ' data-'.$attr.'="'.esc_attr($val).'"';
}
//prepare filter attribute
if(strlen($collector[ 'filter_tags' ])){
$album_filters = bicycleshop_get_media_filters($post_id);
$item_filters = array();
$data_filter = '';
$tags = explode(',', $collector[ 'filter_tags' ]);
//collect tags for this item
foreach($tags as $tag){
if(strlen($tag)){
$item_filters[] = trim($tag);
}
}
//look for tags in album filters
foreach($item_filters as $filter){
if( ( $index = array_search($filter, $album_filters, true) ) !== NULL ){
$data_filter .= $index.',';
$data_attr .= ' data-category-'.$index.'="1"';
}
}
//helps recreate filter in bricks
if(strlen($data_filter)){
$data_attr .= ' data-filter="'.esc_attr( $data_filter ).'"';
}
}
?>
>
'.esc_html( $collector[ 'proofing_comment' ] ).'';
}
//print internal video so lightbox can use it
if( $collector[ 'attachment_type' ] === 'internal' && $collector[ 'type' ] === 'video' ){
$video_attr = array(
'src' => $collector[ 'src' ],
'loop' => false,
//we don't use it now, but good to know how easily do it
//'autoplay' => (bool)$collector[ 'autoplay' ],
'poster' => $collector[ 'main-image' ],
'width' => 480,//ratio 16:9
'height' => 270
);
//bicycleshop_video() produces escaped content
echo ''.bicycleshop_video( $video_attr ).'
'; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
if ( !$proofing_enabled ) {
if(function_exists( 'ADDTOANY_SHARE_SAVE_KIT' )){
//check if social icons are enabled
$sharing_enabled = $args['socials'] === 'on';
if ( $bicycleshop_a13->get_option( 'album_social_icons' ) === 'on' && $sharing_enabled ){
$back_to_post = $bicycleshop_a13->get_option( 'album_share_type' ) === 'album';
//share link will link to album and open image in lightbox
if($back_to_post){
$album_url = bicycleshop_current_url();
$link_url = add_query_arg( 'gallery_item', basename( $collector['src'] ), $album_url );
ADDTOANY_SHARE_SAVE_KIT( array( 'linkname' => $collector['title'], 'linkurl' => $link_url ) );
}
//share link will link to attachment page
else{
ADDTOANY_SHARE_SAVE_KIT( array( 'linkname' => $collector['title'], 'linkurl' => get_attachment_link($collector['id']) ) );
}
//alternative is sharing photo src
// ADDTOANY_SHARE_SAVE_KIT( array( 'linkname' => $collector['title'], 'linkurl' => $collector['src'] ) );
}
}
//like plugin
if( function_exists('dot_irecommendthis') && strlen( $collector['id'] ) > 0 ){
dot_irecommendthis( $collector['id'] );
}
}
//add to cart button
if( bicycleshop_is_woocommerce_activated() && isset( $collector['product_id'] ) && $collector[ 'product_id' ]){
echo WC_Shortcodes::product_add_to_cart(array('id'=> $collector[ 'product_id' ], 'style' => '')); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped
}
?>
$filter){
$indexed_filters[$id]['filter_'.$key] = $filter;
}
}
}
}
}
return $indexed_filters[$id];
}
if ( ! function_exists( 'bicycleshop_cpt_as_frontpage_title_fix' ) ) {
/**
* Fixes title using settings for front_page from general-template.php ver 4.4.1
*
* @param $title array actual title parts
*
* @return array of title parts
*/
function bicycleshop_cpt_as_frontpage_title_fix( $title ) {
$title['title'] = get_bloginfo( 'name', 'display' );
$title['tagline'] = get_bloginfo( 'description', 'display' );
$title['site'] = '';
return $title;
}
}
if ( ! function_exists( 'bicycleshop_cpt_as_frontpage_menu_fix' ) ) {
/**
* Fixes highlighting homepage menu link when custom post type is set as homepage
*
* @param $classes array actual CSS classes for menu item
*
* @param $item object menu item
*
* @return array of CSS classes
*/
function bicycleshop_cpt_as_frontpage_menu_fix( $classes, $item ) {
if(get_option( 'show_on_front' ) === 'page'){
$which_page = get_option( 'page_on_front' );
//link for homepage
if($item->object_id == $which_page){
$classes[] = 'current-menu-item';
}
}
// Return the corrected set of classes to be added to the menu item
return $classes;
}
}