Skip to content

tip

How to remove “Insert into post” button from media panel

add_action( 'admin_footer-post-new.php', 'firmasite_mediapanel_edit' );
add_action( 'admin_footer-post.php', 'firmasite_mediapanel_edit' );
function firmasite_mediapanel_edit() { ?>
  <script type="text/javascript">
jQuery(document).on("DOMNodeInserted", function(){
		// Removing "Insert into post" button from media panel
		jQuery('a.media-button-insert').filter(function(index) { return jQuery(this).text() === "<?php echo __( 'Insert into post' ); ?>" }).remove();
	});
  </script>
<?php }

This will remove “Insert into post” button from wordpress 3.5 media panel from post post types. It wont remove from page post types. For removing both:
Continue reading

Removing WordPress version from styles and scripts’ enqueue

// Removing wordpress version from script and styles
add_action("wp_head", "firmasite_remove_version_from_assets",1);
function firmasite_remove_version_from_assets(){
	function remove_cssjs_ver( $src ) {
		if( strpos( $src, '?ver=' ) )
			$src = remove_query_arg( 'ver', $src );
		return $src;
	}
	add_filter( 'style_loader_src', 'remove_cssjs_ver', 999 );
	add_filter( 'script_loader_src', 'remove_cssjs_ver', 999 );
}

Continue reading

How to move menu location saves to child themes properly

/* 
 This action copies old theme's menu location saves to 
 new theme if new theme doesnt have saves before. Helpful for child theme switches
*/
add_action( 'after_switch_theme',  'ajx_theme_locations_rescue' );
function ajx_theme_locations_rescue() {
	// bug report / support: http://unsalkorkmaz.com/
	// We got old theme's slug name
	$old_theme = get_option( 'theme_switched' );
	// Getting old theme's settings
	$old_theme_mods = get_option("theme_mods_{$old_theme}");
	// Getting old theme's theme location settings
	$old_theme_navs = $old_theme_mods['nav_menu_locations'];
	// Getting new theme's theme location settings
	$new_theme_navs = get_theme_mod( 'nav_menu_locations' );

	// If new theme's theme location is empty (its not empty if theme was activated and set some theme locations before)
	if (!$new_theme_navs) {
		// Getting registered theme locations on new theme
		$new_theme_locations = get_registered_nav_menus();

		foreach ($new_theme_locations as $location => $description ) {
			// We setting same nav menus for each theme location 
			$new_theme_navs[$location] = $old_theme_navs[$location];
		}

		set_theme_mod( 'nav_menu_locations', $new_theme_navs );

	}
}

Continue reading

jQuery ile yeni elementlere müdahale

Diyelim ki sitenizde jQuery kullanarak bazı elementleri sayfa açılışında değiştiriyorsunuz. Örneğin;

jQuery(document).ready(function() {  	
	jQuery("img.avatar").parent("a").addClass("thumbnail pull-left"); 
});

Herşey güzel görünüyor sorun yok derken bir baktınız ki ajax kullanarak site içinde değişiklik yaptığınız zaman yeni eklenen içeriğe sayfa açılışında yaptığınız değişiklikler uygulanmıyor. Ve işin kötüsü jQuery ile yeni eklenen elementlere müdahale edemiyorsunuz çünkü o elementler sayfa açılışında orada değildi.
Continue reading

ss

Theme Customizer ile boğuşmalar

Özet: Theme Customizer üzerinden site ayarları tasarlayacaksanız, ayarları functions.php üzerinden yükleyip de tema dosyalarından globals ile çağıramıyorsun.

Bu hafta sıfırdan Bootstrap üzerine kurulu, bütün tema seçeneklerinin Theme Customizer üzerinden değiştirilebildiği bir Theme Framework yazdım (Bu site bu temayı kullanıyor şu an). Yazmak zorunda kaldım diyebilirim çünkü hali hazırda kullanabileceğim bir altyapının olmadığını gördüm. Bootstrap kullanan çok tema var ama buradaki can alıcı nokta; Bootstrap gibi bir css framework kullanıyorsan WordPress Theme Framework’da özel css kullanmazsın arkadaş. Adamlar tonla özel css’in yanına Bootstrap da eklemiş satıyolar responsive theme ayağına. Neyse sinirlendim gene, konumuza dönelim.

Theme Customizer‘ın en ilginç ve güzel tarafı yapılan değişikliklerin anında site üzerinde görüntülenebilmesi. Bir renk değişimini anında site üzerinde göstermek çok zor olmasa da, site düzeni, logo yüklenmesi, özel yazı stili ve tema stilinin anında site üzerinde gösterilmesi için özel uğraş gerektiriyor. Yaptım, ettim, bitti. Denedim çalışıyor derken bi baktım Theme Customizer’dayken eğer herhangi bağlantıya tıklarsam kaydedilmemiş bütün değişiklikler kayboluyordu. Sonradan uğraşlar sonucu keşfettim ki (Buradaki soruda WordPress.Com kadrosundan biri olan Otto’nun verdiği ipucu iyi geldi) Theme Customizer’dayken functions.php bile olsa ayarların globals ile çağırımları normal WordPress’de olduğu gibi değilmiş. Vardır bir sebebi arka planda neden böyle diye hayata küsmeye gerek yok. Peki çözüm nedir?

Eğer temanızda, ayarları sitede kullanmadan önce bazı fonksiyonları çalıştırmanız gerekiyorsa, örneğin:

$anatema_settings = get_option( 'anatema_settings' ); // site options
switch ($anatema_settings["layout"]) {
    case 'only-content':
        $anatema_layout["primary_class"] = "span8";
        $anatema_layout["primary_fullwidth_class"] = "span8";
        $anatema_layout["secondary_class"] = "hide";        
        $anatema_layout["container_class"] = "container";       
        $anatema_layout["page_class"] = "site-narrow";      
      break;
    case 'sidebar-content':
        $anatema_layout["primary_class"] = "span8 pull-right";
        $anatema_layout["primary_fullwidth_class"] = "span12";
        $anatema_layout["secondary_class"] = "span4";       
        $anatema_layout["container_class"] = "container";       
         break;
    default:
    case 'content-sidebar':
        $anatema_layout["primary_class"] = "span8";
        $anatema_layout["primary_fullwidth_class"] = "span12";
        $anatema_layout["secondary_class"] = "span4";       
        $anatema_layout["container_class"] = "container";       
       break;   
}

Bu kodların sonuçlarını kullandığınız tema dosyalarında globals ile çağırım yerine yukarıdaki gibi site ayarlarını tema’da kullanmadan önce çalıştırılması gereken kodları özel bi dosyaya toplayın ve her tema dosyasına include edin.

Bu arada bahsettiğim Theme Customizer’daki ayarlar nedir diye merak ediyorsanız, hızlıca hazırladığım şu video’yu izleyebilir veya yukarıdaki bağlantıdan ‘e üye olabilir ve kendi sitenizde kendiniz kurcalayabilirsiniz ;)