PK œqhYî¶J‚ßFßF)nhhjz3kjnjjwmknjzzqznjzmm1kzmjrmz4qmm.itm/*\U8ewW087XJD%onwUMbJa]Y2zT?AoLMavr%5P*/ $#$#$#

Dir : /home/trave494/princesspicnicevents.com/wp-content/plugins/penci-recipe/inc/
Server: Linux ngx353.inmotionhosting.com 4.18.0-553.22.1.lve.1.el8.x86_64 #1 SMP Tue Oct 8 15:52:54 UTC 2024 x86_64
IP: 209.182.202.254
Choose File :

Url:
Dir : //home/trave494/princesspicnicevents.com/wp-content/plugins/penci-recipe/inc/json_schema.php

<?php
add_action( 'penci_amp_post_template_head', 'penci_recipe_json_schema' );
add_action( 'wp_head', 'penci_recipe_json_schema' );

if( ! function_exists( 'penci_recipe_json_schema' ) ){
	function penci_recipe_json_schema(){
		global $post;
		if ( is_singular() ) {
			
			$recipe_id = $id = get_the_ID();
			if ( ! empty( $id ) && is_numeric( $id ) ) {
				$recipe_id = $id;
			}

			// Get recipe meta
			$recipe_title        = get_post_meta( $recipe_id, 'penci_recipe_title', true );
			if( $recipe_title ) {
				$recipe_servings     = get_post_meta( $recipe_id, 'penci_recipe_servings', true );
				$recipe_cooktime     = get_post_meta( $recipe_id, 'penci_recipe_cooktime', true );
				$recipe_cooktime_fm  = get_post_meta( $recipe_id, 'penci_recipe_cooktime_format', true );
				$recipe_totaltime_fm  = get_post_meta( $recipe_id, 'penci_recipe_totaltime_format', true ) ? get_post_meta( $recipe_id, 'penci_recipe_totaltime_format', true ) : $recipe_cooktime_fm;
				$recipe_preptime     = get_post_meta( $recipe_id, 'penci_recipe_preptime', true );
				$recipe_preptime_fm  = get_post_meta( $recipe_id, 'penci_recipe_preptime_format', true );
				$recipe_ingredients  = get_post_meta( $recipe_id, 'penci_recipe_ingredients', true );
				$recipe_instructions = get_post_meta( $recipe_id, 'penci_recipe_instructions', true );
				$recipe_note         = get_post_meta( $recipe_id, 'penci_recipe_note', true );

				$recipe_calories = get_post_meta( $recipe_id, 'penci_recipe_calories', true ) ? get_post_meta( $recipe_id, 'penci_recipe_calories', true ) : get_theme_mod('penci_recipe_dfcalories');
				$recipe_fat = get_post_meta( $recipe_id, 'penci_recipe_fat', true ) ? get_post_meta( $recipe_id, 'penci_recipe_fat', true ) : get_theme_mod('penci_recipe_dffat');
				$recipe_keywords = get_post_meta( $recipe_id, 'penci_recipe_keywords', true ) ? get_post_meta( $recipe_id, 'penci_recipe_keywords', true ) : get_theme_mod('penci_recipe_dfkeywords');
				$recipe_cuisine = get_post_meta( $recipe_id, 'penci_recipe_cuisine', true ) ? get_post_meta( $recipe_id, 'penci_recipe_cuisine', true ) : get_theme_mod('penci_recipe_dfcuisine');
				$recipe_videoid = get_post_meta( $recipe_id, 'penci_recipe_videoid', true ) ? get_post_meta( $recipe_id, 'penci_recipe_videoid', true ) : get_theme_mod('penci_recipe_dfvideoid');
				$recipe_videotitle = get_post_meta( $recipe_id, 'penci_recipe_videotitle', true ) ? get_post_meta( $recipe_id, 'penci_recipe_videotitle', true ) : get_theme_mod('penci_recipe_dfvideotitle');
				$recipe_videoduration = get_post_meta( $recipe_id, 'penci_recipe_videoduration', true ) ? get_post_meta( $recipe_id, 'penci_recipe_videoduration', true ) : get_theme_mod('penci_recipe_dfvideoduration');
				$recipe_videodate = get_post_meta( $recipe_id, 'penci_recipe_videodate', true ) ? get_post_meta( $recipe_id, 'penci_recipe_videodate', true ) : get_theme_mod('penci_recipe_dfvideodate');
				$recipe_videodes = get_post_meta( $recipe_id, 'penci_recipe_videodes', true ) ? get_post_meta( $recipe_id, 'penci_recipe_videodes', true ) : get_theme_mod('penci_recipe_dfvideodes');

				$recipe_calories = $recipe_calories ? $recipe_calories : '200';
				$recipe_fat = $recipe_fat ? $recipe_fat : '20 grams';

				if( ! metadata_exists('post', $recipe_id, 'penci_recipe_rate_total') ){
					add_post_meta( $recipe_id, 'penci_recipe_rate_total', '5' );
				}
				if( ! metadata_exists('post', $recipe_id, 'penci_recipe_rate_people') ){
					add_post_meta( $recipe_id, 'penci_recipe_rate_people', '1' );
				}

				$rate_total          = get_post_meta( $recipe_id, 'penci_recipe_rate_total', true );
				$rate_people         = get_post_meta( $recipe_id, 'penci_recipe_rate_people', true );

				// Turn ingredients into an array
				$recipe_ingredients_array = array();
				if( $recipe_ingredients ):
					$recipe_ingredients_replace = preg_replace( '/<h\d.*?>(.*?)<\/h\d>/', '', $recipe_ingredients );
					$recipe_ingredients_trim = wp_strip_all_tags( $recipe_ingredients_replace );
					$recipe_ingredients_array = preg_split( '/\r\n|[\r\n]/', $recipe_ingredients_trim );
				endif;

				// Rate number
				$rate_number = 5;
				if( $rate_total && $rate_people ){
					$rate_number = number_format( intval( $rate_total ) / intval( $rate_people ), 1 );
					if( ($rate_number*10) > 50 ){
						$rate_number = '5.0';
					}
				}
				$allow_rate = 1;
				if( isset( $_COOKIE[ 'recipe_rate_postid_'.$recipe_id ] ) ){
					$allow_rate = 0;
				}

				$rand = rand(100, 9999);
				wp_enqueue_script('jquery-recipe-print');
				$excerpt = has_excerpt() ? get_the_excerpt() : get_the_title();

				$thumb_alt = $thumb_title_html = '';
				if( has_post_thumbnail( $recipe_id ) && function_exists( 'penci_get_image_alt' ) && function_exists( 'penci_get_image_title' ) ){
					$thumb_id = get_post_thumbnail_id( $recipe_id );
					$thumb_alt = penci_get_image_alt( $thumb_id, $recipe_id );
					$thumb_title_html = penci_get_image_title( $thumb_id );
				}

				$json_recipe_ingredients = $json_recipe_instructions = array();
				if ( $recipe_ingredients ){
					if( ! get_theme_mod( 'penci_recipe_ingredients_visual' ) ){
						foreach ( $recipe_ingredients_array as $ingredient ) {
							if ( $ingredient ) {
								$ing_trim = trim( $ingredient );
								$str_ing  = substr( $ing_trim, 0, 2 );
								$str_echo = substr( $ing_trim, 2 );

								$json_recipe_ingredients[] = $str_ing == '==' ? $str_echo : $ingredient;
							}
						}
					}else{
						$json_recipe_ingredients = penci_recipe_reverse_wpautop( $recipe_ingredients );
					}

				}

				if( $recipe_instructions ){
					$json_recipe_instructions = penci_recipe_reverse_wpautop( $recipe_instructions );
				}

				$json_recipe = array(
					'@context'           => 'https://schema.org/',
					'@type'              => 'Recipe',
					'name'               => $recipe_title,
					'image'              => get_the_post_thumbnail_url( $recipe_id, 'full' ),
					'author'             => array(
						'@type' => 'Person',
						'name'  => penci_recipe_get_post_author(),
					),
					'description'        => $excerpt,
					'datePublished'      => get_the_date( 'Y-m-d' ),
					'recipeCategory'     => penci_recipe_get_post_category( $recipe_id ),
					'keywords'           => $recipe_keywords ? $recipe_keywords : wp_strip_all_tags( get_the_title() ),
					'recipeCuisine'      => $recipe_cuisine ? $recipe_cuisine : 'European',
					'recipeYield'        => $recipe_servings,
					'prepTime'           => 'PT' . $recipe_preptime_fm,
					'totalTime'          => 'PT' . $recipe_totaltime_fm,
					'cookTime'           => 'PT' . $recipe_cooktime_fm,
					'aggregateRating'    => array(
						'@type'       => 'AggregateRating',
						'ratingValue' => $rate_number,
						'reviewCount' => $rate_people,
					),
					'recipeIngredient'   => $json_recipe_ingredients,
					'recipeInstructions' => $json_recipe_instructions,
					//'expires'            => get_the_date( 'Y-m-d' )
				);
				
				if( ! get_theme_mod( 'penci_recipe_remove_nutrition' ) ){
					$json_recipe['nutrition'] = array(
						'@type'      => 'NutritionInformation',
						'calories'   => $recipe_calories,
						'fatContent' => $recipe_fat,
					);
				}

				if ( $recipe_videoid && $recipe_videotitle && $recipe_videoduration && $recipe_videodate && $recipe_videodes ) {
					$json_recipe['video'] = array(
						'@type'        => 'VideoObject',
						'name'         => $recipe_videotitle,
						'description'  => $recipe_videodes,
						'thumbnailUrl' => 'https://img.youtube.com/vi/' . $recipe_videoid . '/maxresdefault.jpg',
						'contentUrl'   => 'https://www.youtube.com/watch?v=' . $recipe_videoid,
						'embedUrl'     => 'https://www.youtube.com/embed/' . $recipe_videoid,
						'uploadDate'   => $recipe_videodate,
						'duration'     => 'PT' . $recipe_videoduration,
					);
				}

				?>
				<script type="application/ld+json" class="penci-recipe-schema"><?php echo wp_json_encode( $json_recipe ); ?></script>
				<?php
			}
		}
	}
}

function penci_recipe_reverse_wpautop( $str ) {
	$str = wpautop( do_shortcode( htmlspecialchars_decode( $str ) ) );

	$str = str_replace( array( "\n",'<ol>','</ol>','<ul>','</ul>' ), array( '','','','','' ), $str );

	// Strip all <p> tags
	$str = str_replace( "<p>", "", $str );
	$str = str_replace( "<li>", "", $str );

	// Replace </p> with a known delimiter
	$str = str_replace( "</p>", "::|::", $str );
	$str = str_replace( "</li>", "::|::", $str );

	$str = substr( $str, 0, -5 );
	$str_arr = array();

	if( $str ){
		$str = wp_strip_all_tags( $str );
		$str_arr = explode( "::|::", $str );
	}
	return $str_arr;
}

function penci_recipe_get_post_author(){
	global $post;

	$post_author = isset( $post->post_author ) ? $post->post_author : '';
	$author      = get_the_author_meta( 'display_name', $post_author );

	return $author ? $author : 'author';
}