Bing Search Image API Azure Format Json PHP

Format xml search image dengan Bing API lawas yang gratis alias free, sudah tidak berlaku. Yang dipakai sekarang Bing API V.2 atau dengan Windows Azure Markerplace, masih ada yang gratis walaupun terbatas (limit) hanya sampai 5000 request. Dengan menggunakan format Bing Windows Azure, kita dapat melakukan parsing PHP yang sederhana untuk Bing Search Image format json dengan cara berikut:

Membuat Form Search Box

<form method="get" action="<?php echo $_SERVER['PHP_SELF'];?>">
	Type in a search:
<input type="text" id="searchText" name="s"
	value="<?php
		if (isset($_GET['s']))
		{
			echo($_GET['s']); 
		}
			else 
		{ 
			echo('superman');
		}
?>"/>
<input type="submit" value="Search" id="searchButton" />
</form>

Menampilkan hasil pencarian gambar berdasarkan kata kunci (keyword) yang ditentukan.

if (isset($_GET['s'])) {
	$accountKey = 'your-account-key-here'; //get it here https://datamarket.azure.com/account
	$ServiceRootURL =  'https://api.datamarket.azure.com/Bing/Search/';
	$count = 2;//total list
	$WebSearchURL = $ServiceRootURL . 'Image?$format=json&$top='.$count.'&Query=';
	$context = stream_context_create(array(
		'http' => array(
		'request_fulluri' => true,
		'header'  => "Authorization: Basic " . base64_encode($accountKey . ":" . $accountKey)
			)
	));
	$request = $WebSearchURL . urlencode( '\'' . $_GET['s'] . '\'');
	$response = file_get_contents($request, 0, $context);
	$jsonobj = json_decode($response);

	echo('<ul id="result">');
	foreach($jsonobj->d->results as $value)
	{                        
		echo('<li class="resultlistitem">');
		echo('<b>Title</b>: ' . $value->Title .'<br>');
		echo('<b>Url</b>: ' . $value->MediaUrl .'<br>');
		echo('<b>Source</b>: ' . $value->SourceUrl .'<br>');
		echo('<b>Display Url</b>: ' . $value->DisplayUrl .'<br>');
		echo('<b>Width</b>: ' . $value->Width .' px<br>');
		echo('<b>Height</b>: ' . $value->Height .' px<br>');
		echo('<b>File Size</b>: ' . KByteSize($value->FileSize) .'<br>');
		echo('<b>Image Type</b>: ' . $value->ContentType .'<br>');
		echo('<b>Thumbnail Url</b>: ' . $value->Thumbnail->MediaUrl . '<br>');					
		echo('<b>Thumbnail Display</b>:<br><img src="' . $value->Thumbnail->MediaUrl. '"><br>');
		echo('<b>Large Image Display</b>:<br><img src="' . $value->MediaUrl. '">');
		echo('</li>');
	}
	echo("</ul>");
}
	
//function to convert file size image
function KByteSize($bytes) {
    $size = $bytes / 1024;
    if($size < 1024)
        {
        $size = number_format($size, 2);
        $size .= ' KB';
        } 
    else 
        {
        if($size / 1024 < 1024) 
            {
            $size = number_format($size / 1024, 2);
            $size .= ' MB';
            } 
        else if ($size / 1024 / 1024 < 1024)  
            {
            $size = number_format($size / 1024 / 1024, 2);
            $size .= ' GB';
            } 
        }
    return $size;
}

Tampilannya seperti gambar ini

Bing Image Api
Tampilan API Bing Search Image

Pastikan Anda mencantumkan Primary/Account Key Anda dalam kode tersebut, silahkan daftar di Windows Azure https://datamarket.azure.com/account, gratis terbatas. Semoga bermanfaat.


 Share

Kode PHP – Search List dan Video YouTube Data API v.3

Kode API youtube versi 1 tidak dapat digunakan lagi, untuk versi terbarunya yaitu YouTube Data API Version 3. Cara mudah untuk menampilkan daftar video Youtube berdasarkan kata kunci dan id video di situs atau aplikasi Anda, bisa dengan function PHP yang sederhana seperti ini:

Kode untuk menampilkan hasil

Search List
Untuk menampilkan video dari hasil pencarian berdasarkan kata kunci yang Anda tentukan.

jv_youtube('YOUR KEYWORD');

Single Video
Untuk menampilkan single video berdasarkan video id yang ditentukan. Cara mengetahui video id, misalnya pada link video YouTube https://www.youtube.com/watch?v=QqzekYZdBEo,
kode acak dalam link seperti ini QqzekYZdBEo adalah video id-nya.

jv_youtube('VIDEO ID','video');

Kombinasi dengan Form Search Box

$query = $_GET['x'];
echo '<form>
			<select name="type">
				<option value="search">List</option>
				<option value="videos">Video</option>
			</select>
			<input type="text" name="x" class="form-control" placeholder="Type Keywords or Video ID" value="'.$query.'" required>
			<button type="submit">SUBMIT</button>
	  </form>';
if(isset($query)){
	switch($_GET['type']){
		case 'videos';
			jv_youtube($query,'videos');
		break;
		default:
			jv_youtube($query);
		break;
	}
}

Kode function PHP YouTube API V.3

Simpan kode function berikut di bawah salah satu kode di atas atau di file khusus functions theme atau template situs Anda.

/**
 * Simple PHP Youtube Data API V.3
 * Code @jevuska http://www.jevuska.com
 * Reference https://developers.google.com/youtube/v3/
 ***
 * USAGE
 ***
 * Search list function: jv_youtube('YOUR KEYWORD');
 * Single video function: jv_youtube('VIDEO ID','video');
 ***
 * With form query parameter 'x':
$query = $_GET['x'];
echo '<form>
			<select name="type">
				<option value="search">List</option>
				<option value="videos">Video</option>
			</select>
			<input type="text" name="x" class="form-control" placeholder="Type Keywords or Video ID" value="'.$query.'" required>
			<button type="submit">SUBMIT</button>
	  </form>';
if(isset($query)){
	switch($_GET['type']){
		case 'videos';
			jv_youtube($query,'videos');
		break;
		default:
			jv_youtube($query);
		break;
	}
}
 */

function jv_youtube_setup(){
	//setup Google API Key, create here https://console.developers.google.com/project/
	define('GOOGLE_API_KEY', 'your-google-api-key-here');
	
	//setup PART video api data - allowed values: [snippet,contentDetails,statistics,status]
	define('PART_VIDEO_DATA', 'snippet,contentDetails,statistics,status');
	define('PART_SEARCH_LIST_DATA', 'snippet');

	//setup as 'true' or 'false' to show Video Details and Statistics
	define('VIDEO_DETAILS',true);
	define('VIDEO_STATS', true);
	define('PLAYER', true);

	//setup search list - optional
	define('MAX_RESULT', '5'); //list file per page, min default is 5, max is 50
	define('SEARCH_TYPE', 'video'); //video, channel, playlist
	define('LIST_ORDER', 'date'); //date, rating, relevance, title, videocount, viewcount
	define('SAFE_SEARCH', 'moderate'); //moderate, strict, none

	//setup your text
	define('TOTAL_RESULT', 'Total Results:');
	define('RESULT_PER_PAGE', 'Results Per Page:');
		//write cacheing logic to implement this feature, ie: CACHE LITE PHP
			// define( 'NEXT_PAGE_TOKEN', 'Next Page Token:' ); 
			// define( 'PREVIOUS_PAGE_TOKEN', 'Previous Page Token:' );
	define('VIDEO_TITLE', 'Title:');
	define('VIDEO_DESCRIPTION', 'Description:');
	define('VIDEO_ID', 'Video Id:' );
	define('LINK_VIDEO', 'Link Video:');
	define('CHANNEL_TITLE', 'Channel Title:');
	define('CHANNEL_ID', 'Channel Id:');
	define('LINK_CHANNEL', 'Link Channel:');
	define('VIDEO_THUMBNAIL', 'Thumbnail:');
	define('VIDEO_PLAYER', 'Video Player:');
	define('TIME_PUBLISH', 'Published:');
	define('VIDEO_DURATION', 'Duration:');
	define('VIDEO_DIMENSION', 'Dimension:');
	define('VIDEO_DEFINITION', 'Definition:');
	define('VIDEO_CAPTION', 'Caption:');
	define('VIDEO_LICENSE', 'License:');
	define('COUNT_VIDEO_VIEW', 'View:');
	define('COUNT_VIDEO_LIKE', 'Like:');
	define('COUNT_VIDEO_DISLIKE', 'Dislike:');
	define('COUNT_VIDEO_FAVORITE', 'Favorite:');
	define('COUNT_VIDEO_COMMENT', 'Comment:');
}

function _jv_youtube_data($q,$type=''){
	jv_youtube_setup();
	switch($type){
		case 'videos':
			$data = array(
				'key' => GOOGLE_API_KEY,
				'id' => $q, //video id
				'part' => PART_VIDEO_DATA,
				//MORE OPTION https://developers.google.com/youtube/v3/
			);
		break;
		default:
			$type = 'search';
			$data = array(
				'key' => GOOGLE_API_KEY,
				'q' => urlencode($q), //query search parameter
				'part' => PART_SEARCH_LIST_DATA,

				//START OPTIONAL - comment this rest option if not used (add //)
				'maxResults' => MAX_RESULT,
				'type' => SEARCH_TYPE,
				'order' => LIST_ORDER,
				'safeSearch' => SAFE_SEARCH,
				//END OPTIONAL
				//MORE OPTION https://developers.google.com/youtube/v3/docs/search/list
			);
		break;
	}

	$param = http_build_query($data);
	$json = "https://www.googleapis.com/youtube/v3/$type?$param";
	$str = @file_get_contents($json);
	return $str;
}

function jv_youtube($q, $type = '',$inline = ''){
	$result = '';
	$str = _jv_youtube_data($q, $type);
	if($str === FALSE)	:
		// error handling
		$msg = "Invalid parameter file_get_contents";
		$result .= sprintf('%s', $str);
	else :
		$result .= _jv_search_youtube($str, $type, $inline);
	endif;
	
	if($inline == 'inline')
		return $result;
	else
		print $result;
}

function _jv_search_youtube($str, $type, $inline){
	$doc = json_decode($str, true);
	$respon = array();
	
	$totalresult = (int) $doc['pageInfo']['totalResults'];
	$resultsperpage = (int) $doc['pageInfo']['resultsPerPage'];

	if(empty($inline)){
		if ( defined( 'TOTAL_RESULT' ) )
		$respon[] = sprintf('<b><b>%1$s</b></b> %2$s',TOTAL_RESULT,$totalresult);
		if ( defined( 'RESULT_PER_PAGE' ) )
		$respon[] = sprintf('<b>%1$s</b> %2$s',RESULT_PER_PAGE,$resultsperpage);
	}
	if(empty($type)){
		$nextpage =  $doc['nextPageToken'];
		$prevpage =  $doc['prevPageToken'];
		
		if ( defined( 'NEXT_PAGE_TOKEN' ) )
		$respon[] =  sprintf('<b>%1$s</b> %2$s',NEXT_PAGE_TOKEN,$nextpage);
		if ( defined( 'PREVIOUS_PAGE_TOKEN' ) )
		$respon[] =  sprintf('<b>%1$s</b> %2$s',PREVIOUS_PAGE_TOKEN,$prevpage);
	}
	$i = 0;
	foreach($doc['items'] as $item) {
		$i++;
		if(empty($inline)){
			$title = $item['snippet']['title']; //video title
			$description = $item['snippet']['description']; //video description
			
			$published = $item['snippet'] ['publishedAt']; //published time
			//date format http://php.net/manual/en/datetime.formats.date.php
			$datepublish = date('d-m-Y',strtotime($published));
			
			$videoid = '';
			if(isset($item['id']['videoId']))
				$videoid .= $item['id']['videoId'];
			else
				$videoid .= $item['id'];
			$video_url = "https://www.youtube.com/watch?v=$videoid"; //video url
			$channelid = $item['snippet'] ['channelId']; //channel id
			$thumbnail_url = $item['snippet']['thumbnails']['medium']['url'];//thumbnail option: Allowed values: [default, medium, high]
			$channel_url = "https://www.youtube.com/channel/$channelid"; //channel url
			
			$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_TITLE,$title);
			$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_DESCRIPTION,$description);
			if ( defined( 'VIDEO_ID' ) )
				$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_ID,$videoid);
			if ( defined( 'CHANNEL_ID' ) )
				$respon[] = sprintf('<b>%1$s</b> %2$s',CHANNEL_ID,$channelid);
			if ( defined( 'TIME_PUBLISH' ) )
				$respon[] = sprintf('<b>%1$s</b> %2$s',TIME_PUBLISH,$datepublish);
			if ( defined( 'VIDEO_THUMBNAIL' ) )
				$respon[] = sprintf('<b>%1$s</b><br><img src="%2$s">',VIDEO_THUMBNAIL,$thumbnail_url);
			if ( PLAYER == true )
				$respon[] = sprintf("<b>%s</b><br><div id='player-$i' class='player' data-id='$videoid'></div>",VIDEO_PLAYER);
			if ( defined( 'LINK_VIDEO' ) )
				$respon[] = sprintf('<b>%1$s</b> <a href="%2$s">%2$s</a>',LINK_VIDEO,$video_url);
			if ( defined( 'LINK_CHANNEL' ) )
				$respon[] = sprintf('<b>%1$s</b> <a href="%2$s">%2$s</a>',LINK_CHANNEL,$channel_url);
		}
		
		if($type == 'videos'){
			$channelititle = $item['snippet'] ['channelTitle']; //channel title
			if ( defined( 'CHANNEL_TITLE' ) )
				$respon[] = sprintf('<b>%1$s</b> %2$s',CHANNEL_TITLE,$channelititle);
			$details = $item['contentDetails'];
			$statistics = $item['statistics'];
			if ( VIDEO_DETAILS == true){
				foreach( array($details) as $item ) {
					$duration = covtime($item['duration']);
					$dimension = $item['dimension'];
					$definition = $item['definition'];
					$caption = $item['caption'] != 'false' ? $item['caption']: '-';
					$license = $item['licensedContent'];
					if ( defined( 'VIDEO_DURATION' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_DURATION,$duration);
					if ( defined( 'VIDEO_DIMENSION' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_DIMENSION,$dimension);
					if ( defined( 'VIDEO_DEFINITION' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_DEFINITION,$definition);
					if ( defined( 'VIDEO_CAPTION' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_CAPTION,$caption);
					if ( defined( 'VIDEO_LICENSE' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',VIDEO_LICENSE,$license);
				}
			}
		
			if ( VIDEO_STATS == true ){
				foreach( array($statistics) as $item ) {
					$view = $item['viewCount'];
					$like = $item['likeCount'];
					$dislike = $item['dislikeCount'];
					$favorite = $item['favoriteCount'];
					$comment = $item['commentCount'];
					if ( defined( 'COUNT_VIDEO_VIEW' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_VIEW,$view);
					if ( defined( 'COUNT_VIDEO_LIKE' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_LIKE,$like);
					if ( defined( 'COUNT_VIDEO_DISLIKE' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_DISLIKE,$dislike);
					if ( defined( 'COUNT_VIDEO_FAVORITE' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_FAVORITE,$favorite);
					if ( defined( 'COUNT_VIDEO_COMMENT' ) )
						$respon[] = sprintf('<b>%1$s</b> %2$s',COUNT_VIDEO_COMMENT,$comment);
				}
			}
			$respon[] = '<hr>';	
		}
		if(empty($type))
			$respon[] = jv_youtube($videoid,'videos','inline');
	}
	$result = implode('<br>',$respon);
	return $result;
}

function covtime($youtube_time) {
	//function convert youtube time. Source: http://stackoverflow.com/questions/24393230/convert-youtube-api-v3-video-duration-in-php
    preg_match_all('/(\d+)/',$youtube_time,$parts);
    if (count($parts[0]) == 1) {
        array_unshift($parts[0], "0", "0");
    } elseif (count($parts[0]) == 2) {
        array_unshift($parts[0], "0");
    }

    $sec_init = $parts[0][2];
    $seconds = $sec_init%60;
    $seconds_overflow = floor($sec_init/60);

    $min_init = $parts[0][1] + $seconds_overflow;
    $minutes = ($min_init)%60;
    $minutes_overflow = floor(($min_init)/60);

    $hours = $parts[0][0] + $minutes_overflow;

    if($hours != 0)
        return $hours.':'.$minutes.':'.$seconds;
    else
        return $minutes.':'.$seconds;
}

Berikut kode JavaScript jika ingin menampilkan video player secara asyncronous.

<script>
//https://developers.google.com/youtube/iframe_api_reference
//http://stackoverflow.com/a/901144
	var tag = document.createElement('script');

	tag.src = "https://www.youtube.com/iframe_api";
	var firstScriptTag = document.getElementsByTagName('script')[0];
	firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

    players = new Array();
	var player = document.getElementsByClassName('player');
	function onYouTubeIframeAPIReady() {
		for (var i = 0; i < player.length; i++) {
			t = new YT.Player(player[i].getAttribute('id'), {
				height: '390',
				width: '640',
				videoId: player[i].getAttribute('data-id'),
				events: {
					//'onReady': onPlayerReady,
					'onStateChange': onPlayerStateChange
				}
			});
			players.push(t);
		}
	}

	function onPlayerReady(event) {
		event.target.playVideo();
	}

	function onPlayerStateChange(event) {
		var temp = event.target.getVideoUrl();
		if (event.data == YT.PlayerState.PLAYING) {
			for (var i = 0; i < players.length; i++) {
              if (players[i].getVideoUrl() != temp) {
				  setTimeout(players[i].stopVideo, 6000);
				  players[i].stopVideo();
			  }
			}
        }
	}

	function getParameterByName(name) {
		name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
		var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
			results = regex.exec(location.search);
		return results === null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
	}
</script>

Set-up Google API Key Anda (ganti your-google-api-key-here pada kode function di atas), petunjuk tambahan lainnya ada dalam kode tersebut.

Youtube API 3 Search List Demo
Tampilan Script PHP Youtube API 3 Search

Kode PHP Video YouTube Data API v.3 ini tidak menggunakan Google Client API PHP library, jadi cukup sederhana untuk Anda terapkan di situs seperti WordPress atau aplikasi Anda. Kode untuk tampilan dan referensi lainnya bisa temukan di Google Developer YouTube Data API. Semoga bermanfaat.


 Share

Cara mudah redirect header PHP query WordPress

Cara mudah melakukan redirect halaman blog WordPress bisa diterapkan di htaccess atau dengan menggunakan function redirect header PHP berikut. Pasang di file functions.php theme Anda, and save it:

add_action('template_redirect', 'redirect_header_search');

function redirect_header_search(){
	if($_GET['s']){ // letter 's' as default search query parameter WP
		$dir = 'topic'; // 'topic' as var $search_base
		$homeurl = esc_url(home_url( '/' ));
		$query = urlencode_deep(get_search_query());
		$location = "$homeurl$dir/$query";
		$status = '301'; // 301 Moved Permanently, empty/default is 302 for temporary redirect
	wp_redirect( $location, $status );
	}
}

//flush the rules of search base WP default
//rewrite.php line 478 WP ver 4.2.2
//var $search_base = 'search'; 
add_action('init', 'change_search_base_wp');
function change_search_base_wp() {
    global $wp_rewrite;
		$dir = 'topic'; // 'topic' as var $search_base
		$rules = $wp_rewrite->front.'%dir%/%search%';
		$rule = str_replace('%dir%',$dir,$rules);
		$wp_rewrite->search_structure = $rule;
		$wp_rewrite->flush_rules();
    return $wp_rewrite;
}

Kode ini hanya untuk me-redirect url search default, dan khusus function wp_redirect bisa Anda terapkan pada berbagai parameter query atau redirect halaman tertentu. Semoga bermanfaat.


 Share

Exclude admin di recent comments widget WordPress

Bagaimana cara supaya administrator atau owner yang komentar di blognya sendiri tidak muncul (exclude) di recent comments widget blog WordPress?. Tanpa harus menggunakan plugin tambahan, Anda bisa memasang function berikut di file functions.php theme WordPress Anda.

add_filter('widget_comments_args', '_jv_filter_recent_comments_widget');

function _jv_filter_recent_comments_widget(){
	// get data from database table wp_options with option_name 'widget_recent-comments'
	$instance = array_shift(get_option('widget_recent-comments'));
	$number = absint($instance['number']);
	$args = array(
		'number' => $number,
		'status'  => 'approve',
		'post_status' => 'publish',
		'author__not_in' => 1, // '1' is user id of administrator/owner
        );
	return $args;
}

Save pekerjaan Anda and see the result.

Jadi, kecuali owner blog, para pengunjung lain yang komentar di blog Anda tetap ada di recent comments (komentar terbaru) widget.


 Share

Membuat parameter baru search query WordPress

Parameter query search result WordPress basic-nya menggunakan "?s=", tapi bagaimana jika kita ingin membuat parameter baru lainnya berdasarkan hasil pencarian WordPress.

Misalnya, kita ingin membuat parameter query seperti ini (Demo):
http://www.jevuska.com/?p=list&q=injeksi+manual+keyword

Di file functions.php theme WordPress Anda, tambahkan kode function berikut:

function _jv_add_query_vars_filter( $vars ){

//create 'q' as query parameter
	$vars[] = "q";
	return $vars;

}
add_filter( 'query_vars', '_jv_add_query_vars_filter' );

function _jv_custom_search_query( $query ) {

//pre get post loop p and q parameter base on s parameter
    if ($_GET['p'] == "list" && get_query_var('q') != "") {
		$query->set('post_status', 'publish');
		$query->set('post_type', 'post');
		$query->set( 's', $query->query_vars['q']);

//add filter to wp_title base on q parameter
		add_filter('wp_title',function(){
			$title = ucwords(get_search_query());
			return $title;
		},10,2);
    };
	return $query;
}
add_filter( 'pre_get_posts', '_jv_custom_search_query');

//optional - add custome search form
function _jv_search_form( $form ) {
	$form = '<form role="search" method="get" id="searchform" class="searchform" action="' . home_url( '/' ) . '" >
	<div><label class="screen-reader-text" for="s">' . __( 'Search for:' ) . '</label>
	<input type="hidden" value="list" name="p"/>
	<input type="text" value="' . get_search_query() . '" name="q" id="s" />
	</div>
	</form>';
	return $form;
}

add_filter( 'get_search_form', '_jv_search_form' );

Function ini akan meng-generate post di halaman front page theme WP Anda (index.php atau home.php), jadi hasilnya akan sangat tergantung pada theme yang digunakan, juga plugin tambahan yang menfilter wp_title, contohnya plugin Yoast WordPress SEO.

PS: post ini adalah hasil request sobat blogger.


 Bagikan

Injeksi Manual Keyword: Add-ons/extension plugin SEO SearchTerms Tagging 2

Meskipun plugin SEO SearchTerms Tagging 2 ini sudah tidak pernah lagi di-update sejak tahun 2011, tetap saja masih banyak blogger yang masih menggunakannya, dengan tujuan untuk melipatgandakan trafik kunjungan ke situs, dan bagi yang hobi coding, tidak sedikit juga yang melakukan oprek kecil-kecilan terhadap plugin ini.

Berbicara tentang oprek, ini ada permintaan sobat blogger untuk ngoprek sedikit plugin ini agar ada fitur untuk injeksi manual keyword ke dalam database. Oprek ini tidak secara langsung saya terapkan ke dalam plugin STT2, akan tetapi melalui plugin tambahan (add-ons/extension) yang harus diinstall. Jadi, core plugin STT2 tidak terganggu sama sekali dan tidak ada yang perlu dioprek.

Nama pluginnya STT2 Extension Add Terms, silahkan download di repository github Jevuska https://github.com/Jevuska/stt2-extension-add-terms, lalu upload di WordPress Anda, install dan aktifkan.

Screenshot plugin
sc-stt2extat-plugin-1

sc-stt2extat-plugin-2

sc-stt2extat-plugin-3

Script Feature

  • jQuery
  • jQuery UI
  • Ajax
  • Plugin Search Excerpt by Scott Yang
  • Google Suggest by haochi

Fitur manual injeksi keyword ini akan tampil di area setting plugin STT2 langsung. Masih versi 1.0, mohon reportnya for any thing such as bugs, security, or vulnerability issue.

Last but not least.. are*****7[at]g****.com thanks for your PP donate, I really appreciate it.


 Bagikan

Waktu Matinya Sel Telur (Ovum) Perempuan

Mitos suhu basal tubuh

Berbicara mengenai sel telur (ovum) pada perempuan, paling banyak dikaitkan dengan siklus mentruasi dan yang paling penting adalah kehamilan. Memahami proses bagaimana kehamilan terjadi dari dalam memberikan pemahaman yang berharga tentang bagaimana Anda dapat memperbaiki situasi sehingga Anda mendapatkan lebih dekat dengan tujuan Anda yaitu cepat hamil. Ada kepercayaan luas di kalangan perempuan yang mencoba untuk hamil, bahwa jika suhu tubuh basal pada fase ke-2 dari siklus menstruasi di bawah 37 derajat Celcius dan kemudian naik lagi, ini adalah tanda ovum itu mati. Faktanya bahwa itu tidak benar sama sekali, dan mungkin bisa dikatakan itu hanya sekedar mitos.

Berapa lama sel telur dapat hidup?

Mungkin ada beberapa kesalahpahaman lain tentang kapan sel telur mati, ada yang mengatakan terjadi pada hari ke-5 sampai ke-7 setelah ovulasi. Pada dasarnya, informasi ini tidak didukung oleh bukti ilmiah. Sebenarnya, sel telur telah siap konsepsi selama 24 jam setelah ovulasi. Jika pembuahan tidak terjadi dalam periode ini, sel telur akan melewati saluran tuba dan mati di dalam rahim, dan ini adalah proses yang benar-benar normal, dan terjadi setiap siklus ketika tidak jadi hamil, jadi matinya sel telur berlangsung dengan waktu yang sangat cepat, dan mungkin saja hanya dalam hitungan jam.

Kenaikan suhu basal tubuh pasca-ovulasi biasa terjadi pada hari ke-12 dan ke-14. Namun, terkadang perempuan mengira suhu tersebut adalah waktu kematian sel telur. Pada kenyataannya itu mungkin saja menjadi tanda telah terjadi implantasi dan telur dibuahi, yang merupakan tanda kehamilan awal. Implantasi terjadi dimana telur yang telah dibuahi menempel ke dinding rahim, terjadi pada hari 5-7 setelah ovulasi. Proses ini menyebabkan kenaikan estrogen dan suhu basal tubuh menjadi naik, tapi bukan kematian sel telur.

Penetrasi Sperma ke Ovum
Proses sperma melakukan penetrasi ke ovum. (Wikimedia)

Kekurangan progesteron dapat menyebabkan suhu basal tubuh menjadi tidak dinamis dengan perbedaan suhu kurang dari 0,2 Celcius atau kenaikan suhu yang sangat lambat. Suhu yang turun hanya dalam 1-2 hari tidak bisa berarti juga adanya ketidakseimbangan hormon. Progesteron diproduksi oleh yellow body di ovarium dan sampai implantasi terjadi.

Kenapa implantasi bisa tidak terjadi?

Implantasi tidak terjadi artinya Anda tidak jadi hamil. Ada beberapa kasus ketika perempuan tidak memiliki gangguan hormonal dan masih tidak bisa hamil. Kadang-kadang implantasi tidak terjadi jika seorang perempuan memiliki masalah dengan endometrium, lapisan dinding rahim bagian dalam. Endometrium hanya dapat menerima telur yang telah dibuahi ketika sudah siap untuk memberikan kondisi yang optimal bagi perkembangan janin ke depan.

Oleh karena itu, seorang perempuan dapat saja memiliki grafik suhu tubuh basal sempurna tetapi memiliki masalah dengan konsepsi karena masalah endometrium, dan ini hanya dapat didiagnosis jika Anda mengkonsultasikannya dengan dokter kandungan Anda.

Para ginekolog percaya bahwa sekitar 30% dari seluruh kehamilan, berakhir selama tahap ini ketika perempuan bahkan tidak bisa menduga bahwa mereka hamil. Walaupun begitu ini bukanlah jumlah yang tepat, karena setiap diagnosa kehamilan yang dini yaitu 5-7 hari setelah pembuahan hampir tidak mungkin dilakukan.

Jadi bisa disimpulkan bahwa adanya kenaikan suhu basal tubuh bisa saja menjadikan Anda telah hamil, bukan waktu matinya sel telur.


 Bagikan