Skip to content

WordPress

caption-to-title

Wp3.5 Media Gallery Edit modal: change captions to title

Solution Explanation:

With WordPress 3.5, media panel is completely changed and now using backbone.js. I am new to this javascript framework and there is few guides in internet. It seems wp-includes/media-template.php file providing some media panel templates as javascript html blocks now. In this problem we needed to replace

<input type="text" value="{{ data.caption }}" class="describe" data-setting="caption"
					placeholder="<?php esc_attr_e('Caption this image…'); ?>" {{ maybeReadOnly }} />

with

<input type="text" value="{{ data.title }}" class="describe" data-setting="title"
					placeholder="<?php esc_attr_e('Caption this image…'); ?>" {{ maybeReadOnly }} />

I couldnt find a better way to replace that content only, so i removed that script block and re-created it fully. I understand that system is good for custom panel creating etc but still there must be better way to change default WordPress blocks in my opinion. I hope there will be in future.

Solution:

Continue reading

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

Weeping Woman 1937 by Pablo Picasso 1881-1973

WordPress SEO eklentisi ve Facebook Beğeni / Opengraph Sorunu

Bu hafta annemin Resimli Yemek Tariflerisitesini Yerleske.Net sistemine taşıdım. Yemek Tarifi ekleme eklentisi yarattım ve taşıma esnasında normal “post” custom post type’dan “yemek” custom post type’ına çevirmenin ne kadar işkence olduğunu da farkettim. Çevirmek değildi sorun.. Sorun, WordPress 3.5.1 kullandığımız şu günlerde cpt‘lerin %postname% permastruct’a sahip olamamasıydı. Örneğin “Kuru incir receli” için http://resimlitarif.com/kuru-incir-receli/ olan sayfa bağlantısı http://resimlitarif.com/yemek/kuru-incir-receli/ olmak zorunda kalıyordu. Ektra /yemek/ eklenince bağlantıya, haliyle bütün facebook yorumları ve beğenileri kayboluyordu. Bunu anneme kabul ettirmem imkansızdı haklı olarak -.-’ Çözüm için interneti aradım ama çözümün henüz olmadığı gördüm. Belki ileride 3.6+ olabilir ama şu an yoktu ve benim çözüm bulmam gerekiyordu. Ben de sırf bu sitede istisna olması için bir eklenti yazdım ve picasso’nun insan çizimleri gibi bi yaratık ortaya çıktı. Ahanda benim çözümüm:
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 ;)