<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Digging into WordPress &#187; Admin</title>
	<atom:link href="http://digwp.com/category/admin/feed/" rel="self" type="application/rss+xml" />
	<link>http://digwp.com</link>
	<description>Take your WordPress skills to the next level.</description>
	<lastBuildDate>Fri, 18 May 2012 18:21:22 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.2</generator>
		<item>
		<title>Complete List of Default WordPress Files</title>
		<link>http://digwp.com/2012/05/complete-list-wordpress-files/</link>
		<comments>http://digwp.com/2012/05/complete-list-wordpress-files/#comments</comments>
		<pubDate>Thu, 03 May 2012 19:34:12 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[Security]]></category>
		<category><![CDATA[files]]></category>
		<category><![CDATA[reference]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=6035</guid>
		<description><![CDATA[When cleaning up hacked sites and testing .htaccess tricks, it&#8217;s nice to have a list of WordPress directory and file names for checking patterns and finding strings directly via Search/Find. Especially when working remotely, having a complete list of WordPress files available online can help expedite the attack-recovery process. The official Codex page lists some [...]]]></description>
			<content:encoded><![CDATA[<p>When cleaning up hacked sites and testing <a href="http://perishablepress.com/category/web-design/htaccess/" title=".htaccess archive @ Perishable Press">.htaccess tricks</a>, it&#8217;s nice to have a list of WordPress directory and file names for checking patterns and finding strings directly via Search/Find. Especially when working remotely, having a <strong>complete list of WordPress files</strong> available online can help expedite the attack-recovery process.</p>
<p><span id="more-6035"></span></p>
<p>The official <a href="http://codex.wordpress.org/WordPress_Files" title="Codex: WordPress Files">Codex page</a> lists <em>some</em> important files, but only for <abbr title="WordPress">WP</abbr> version 2.x and doesn&#8217;t seem to list files located in all sub-directories. Sure it&#8217;s not the most exciting topic in the world, but it&#8217;s always good practice to <em>know thy files</em>. You get to see the bigger picture and gain a better understanding of how <em>much</em> stuff actually is included in WordPress &mdash; <em>especially</em> if you start digging around in the <code>/wp-includes/</code> directory.. bring a snack, knife, and some flint to improve your chances.</p>
<p>We&#8217;re looking at default download/unzip of <strong>WordPress version 3.3.2</strong> &mdash; a complete list of all files in all directories in alphabetical order. Here&#8217;s the roadmap:</p>
<ul>
<li><a href="#wp-structure">directory structure (without files)</a></li>
<li><a href="#wp-root">WordPress root-level files</a></li>
<li><a href="#wp-admin">files in the <code>/wp-admin/</code> directory</a></li>
<li><a href="#wp-content">files in the <code>/wp-content/</code> directory</a></li>
<li><a href="#wp-includes">files in the <code>/wp-includes/</code> directory</a></li>
</ul>
<h3 id="wp-structure">Basic WordPress directory structure</h3>
<pre><code>/wordpress/

	/wp-admin/
		/css/
		/images/
		/includes/
		/js/
		/maint/
		/network/
		/user/

	/wp-content/
		/plugins/
			/akismet/
		/themes/
			/twentyeleven/
				/colors/
				/images/
				/inc/
					/images/
				/js/
				/languages/
			/twentyten/
				/images/
					/headers/
				/languages/
	
	/wp-includes/
		/Text/
		/css/
		/images/
			/crystal/
			/smilies/
			/wlw/
		/js/
			/crop/
			/imgareaselect/
			/jcrop/
			/jquery/
				/ui/
			/plupload/
			/scriptaculous/
			/swfupload/
				/plugins/
			/thickbox/
			/tinymce/
				/langs/
				/plugins/
					/directionality/
					/fullscreen/
					/inlinepopups/
						/skins/
							/clearlooks2/
								/img/
					/media/
						/css/
						/js/
					/paste/
						/js/
					/spellchecker/
						/classes/
							/utils/
						/css/
						/img/
						/includes/
					/tabfocus/
					/wordpress/
						/css/
						/img/
					/wpdialogs/
						/js/
					/wpeditimage/
						/css/
						/img/
						/js/
					/wpfullscreen/
					/wpgallery/
						/img/
					/wplink/
				/themes/
					/advanced/
						/img/
						/js/
						/skins/
							/default/
								/img/
							/highcontrast/
							/o2k7/
								/img/
							/wp_theme/
								/img/
				/utils/
		/pomo/
		/theme-compat/</code></pre>
<h3 id="wp-root">Root-level WordPress files</h3>
<pre><code>/wordpress/
	index.php
	license.txt
	readme.html
	wp-activate.php
	wp-app.php
	wp-blog-header.php
	wp-comments-post.php
	wp-config-sample.php
	wp-cron.php
	wp-links-opml.php
	wp-load.php
	wp-login.php
	wp-mail.php
	wp-pass.php
	wp-register.php
	wp-settings.php
	wp-signup.php
	wp-trackback.php
	xmlrpc.php</code></pre>
<h3 id="wp-admin">Files in the /wp-admin/ directory</h3>
<pre><code>/wp-admin/
	about.php
	admin-ajax.php
	admin-footer.php
	admin-functions.php
	admin-header.php
	admin-post.php
	admin.php
	async-upload.php
	comment.php
	credits.php
	/css/
		colors-classic.css
		colors-classic.dev.css
		colors-fresh.css
		colors-fresh.dev.css
		farbtastic.css
		file-list.txt
		ie-rtl.css
		ie-rtl.dev.css
		ie.css
		ie.dev.css
		install.css
		install.dev.css
		media-rtl.css
		media-rtl.dev.css
		media.css
		media.dev.css
		wp-admin-rtl.css
		wp-admin-rtl.dev.css
		wp-admin.css
		wp-admin.dev.css
	custom-background.php
	custom-header.php
	edit-comments.php
	edit-form-advanced.php
	edit-form-comment.php
	edit-link-form.php
	edit-tag-form.php
	edit-tags.php
	edit.php
	export.php
	freedoms.php
	gears-manifest.php
	/images/
		align-center.png
		align-left.png
		align-none.png
		align-right.png
		archive-link.png
		arrows-dark-vs.png
		arrows-dark.png
		arrows-vs.png
		arrows.png
		blue-grad.png
		bubble_bg-rtl.gif
		bubble_bg.gif
		button-grad-active.png
		button-grad.png
		comment-grey-bubble.png
		date-button.gif
		ed-bg-vs.gif
		ed-bg.gif
		fade-butt.png
		fav-arrow-rtl.gif
		fav-arrow.gif
		fav-vs.png
		fav.png
		generic.png
		gray-grad.png
		gray-star.png
		icons32-vs.png
		icons32.png
		imgedit-icons.png
		list.png
		loading-publish.gif
		loading.gif
		logo-ghost.png
		logo-login.png
		logo.gif
		marker.png
		mask.png
		media-button-image.gif
		media-button-music.gif
		media-button-other.gif
		media-button-video.gif
		media-button.png
		menu-arrow-frame-rtl.png
		menu-arrow-frame.png
		menu-arrows.gif
		menu-bits-rtl-vs.gif
		menu-bits-rtl.gif
		menu-bits-vs.gif
		menu-bits.gif
		menu-dark-rtl-vs.gif
		menu-dark-rtl.gif
		menu-dark-vs.gif
		menu-dark.gif
		menu-shadow-rtl.png
		menu-shadow.png
		menu-vs.png
		menu.png
		no.png
		press-this.png
		required.gif
		resize-rtl.gif
		resize.gif
		screen-options-toggle-vs.gif
		screen-options-toggle.gif
		screenshots
		se.png
		sort.gif
		star.png
		toggle-arrow-rtl.gif
		toggle-arrow.gif
		upload-classic.png
		upload-fresh.png
		wheel.png
		white-grad-active.png
		white-grad.png
		widgets-arrow-vs.gif
		widgets-arrow.gif
		wordpress-logo.png
		wp-badge.png
		wp-logo-vs.png
		wp-logo.png
		wpspin_dark.gif
		wpspin_light.gif
		xit.gif
		yes.png
	import.php
	/includes/
		admin.php
		bookmark.php
		class-ftp-pure.php
		class-ftp-sockets.php
		class-ftp.php
		class-pclzip.php
		class-wp-comments-list-table.php
		class-wp-filesystem-base.php
		class-wp-filesystem-direct.php
		class-wp-filesystem-ftpext.php
		class-wp-filesystem-ftpsockets.php
		class-wp-filesystem-ssh2.php
		class-wp-importer.php
		class-wp-links-list-table.php
		class-wp-list-table.php
		class-wp-media-list-table.php
		class-wp-ms-sites-list-table.php
		class-wp-ms-themes-list-table.php
		class-wp-ms-users-list-table.php
		class-wp-plugin-install-list-table.php
		class-wp-plugins-list-table.php
		class-wp-posts-list-table.php
		class-wp-terms-list-table.php
		class-wp-theme-install-list-table.php
		class-wp-themes-list-table.php
		class-wp-upgrader.php
		class-wp-users-list-table.php
		comment.php
		continents-cities.php
		dashboard.php
		deprecated.php
		export.php
		file.php
		image-edit.php
		image.php
		import.php
		list-table.php
		manifest.php
		media.php
		menu.php
		meta-boxes.php
		misc.php
		ms-deprecated.php
		ms.php
		nav-menu.php
		plugin-install.php
		plugin.php
		post.php
		schema.php
		screen.php
		taxonomy.php
		template.php
		theme-install.php
		theme.php
		update-core.php
		update.php
		upgrade.php
		user.php
		widgets.php
	index-extra.php
	index.php
	install-helper.php
	install.php
	/js/
		cat.dev.js
		cat.js
		categories.dev.js
		categories.js
		comment.dev.js
		comment.js
		common.dev.js
		common.js
		custom-background.dev.js
		custom-background.js
		custom-fields.dev.js
		custom-fields.js
		dashboard.dev.js
		dashboard.js
		edit-comments.dev.js
		edit-comments.js
		editor.dev.js
		editor.js
		farbtastic.js
		gallery.dev.js
		gallery.js
		image-edit.dev.js
		image-edit.js
		inline-edit-post.dev.js
		inline-edit-post.js
		inline-edit-tax.dev.js
		inline-edit-tax.js
		link.dev.js
		link.js
		media-upload.dev.js
		media-upload.js
		media.dev.js
		media.js
		nav-menu.dev.js
		nav-menu.js
		password-strength-meter.dev.js
		password-strength-meter.js
		plugin-install.dev.js
		plugin-install.js
		post.dev.js
		post.js
		postbox.dev.js
		postbox.js
		revisions-js.php
		set-post-thumbnail.dev.js
		set-post-thumbnail.js
		tags.dev.js
		tags.js
		theme-preview.dev.js
		theme-preview.js
		theme.dev.js
		theme.js
		user-profile.dev.js
		user-profile.js
		utils.dev.js
		utils.js
		widgets.dev.js
		widgets.js
		word-count.dev.js
		word-count.js
		wp-fullscreen.dev.js
		wp-fullscreen.js
		xfn.dev.js
		xfn.js
	link-add.php
	link-manager.php
	link-parse-opml.php
	link.php
	load-scripts.php
	load-styles.php
	/maint/
		repair.php
	media-new.php
	media-upload.php
	media.php
	menu-header.php
	menu.php
	moderation.php
	ms-admin.php
	ms-delete-site.php
	ms-edit.php
	ms-options.php
	ms-sites.php
	ms-themes.php
	ms-upgrade-network.php
	ms-users.php
	my-sites.php
	nav-menus.php
	/network/
		admin.php
		edit.php
		index-extra.php
		index.php
		menu.php
		plugin-editor.php
		plugin-install.php
		plugins.php
		profile.php
		settings.php
		setup.php
		site-info.php
		site-new.php
		site-settings.php
		site-themes.php
		site-users.php
		sites.php
		theme-editor.php
		theme-install.php
		themes.php
		update-core.php
		update.php
		upgrade.php
		user-edit.php
		user-new.php
		users.php
	network.php
	options-discussion.php
	options-general.php
	options-head.php
	options-media.php
	options-permalink.php
	options-privacy.php
	options-reading.php
	options-writing.php
	options.php
	plugin-editor.php
	plugin-install.php
	plugins.php
	post-new.php
	post.php
	press-this.php
	profile.php
	revision.php
	setup-config.php
	theme-editor.php
	theme-install.php
	themes.php
	tools.php
	update-core.php
	update.php
	upgrade-functions.php
	upgrade.php
	upload.php
	/user/
		admin.php
		index-extra.php
		index.php
		menu.php
		profile.php
		user-edit.php
	user-edit.php
	user-new.php
	users.php
	widgets.php</code></pre>
<h3 id="wp-content">Files in the /wp-content/ directory</h3>
<pre><code>/wp-content/
	index.php
	/plugins/
		/akismet/
			admin.php
			akismet.css
			akismet.gif
			akismet.js
			akismet.php
			legacy.php
			readme.txt
			widget.php
		hello.php
		index.php
	/themes/
		index.php
		/twentyeleven/
			404.php
			archive.php
			author.php
			category.php
			/colors/
				dark.css
			comments.php
			content-aside.php
			content-featured.php
			content-gallery.php
			content-image.php
			content-intro.php
			content-link.php
			content-page.php
			content-quote.php
			content-single.php
			content-status.php
			content.php
			editor-style-rtl.css
			editor-style.css
			footer.php
			functions.php
			header.php
			image.php
			/images/
				comment-arrow-bypostauthor-dark-rtl.png
				comment-arrow-bypostauthor-dark.png
				comment-arrow-bypostauthor-rtl.png
				comment-arrow-bypostauthor.png
				comment-arrow-dark-rtl.png
				comment-arrow-dark.png
				comment-arrow-rtl.png
				comment-arrow.png
				comment-bubble-dark-rtl.png
				comment-bubble-dark.png
				comment-bubble-rtl.png
				comment-bubble.png
				headers
				search.png
				wordpress.png
			/inc/
				/images/
					content-sidebar.png
					content.png
					dark.png
					light.png
					sidebar-content.png
				theme-options.css
				theme-options.js
				theme-options.php
				widgets.php
			index.php
			/js/
				html5.js
				showcase.js
			/languages/
				twentyeleven.pot
			license.txt
			page.php
			readme.txt
			rtl.css
			screenshot.png
			search.php
			searchform.php
			showcase.php
			sidebar-footer.php
			sidebar-page.php
			sidebar.php
			single.php
			style.css
			tag.php
		/twentyten/
			404.php
			archive.php
			attachment.php
			author.php
			category.php
			comments.php
			editor-style-rtl.css
			editor-style.css
			footer.php
			functions.php
			header.php
			/images/
				/headers/
					berries-thumbnail.jpg
					berries.jpg
					cherryblossoms-thumbnail.jpg
					cherryblossoms.jpg
					concave-thumbnail.jpg
					concave.jpg
					fern-thumbnail.jpg
					fern.jpg
					forestfloor-thumbnail.jpg
					forestfloor.jpg
					inkwell-thumbnail.jpg
					inkwell.jpg
					path-thumbnail.jpg
					path.jpg
					sunset-thumbnail.jpg
					sunset.jpg
				wordpress.png
			index.php
			/languages/
				twentyten.pot
			license.txt
			loop-attachment.php
			loop-page.php
			loop-single.php
			loop.php
			onecolumn-page.php
			page.php
			rtl.css
			screenshot.png
			search.php
			sidebar-footer.php
			sidebar.php
			single.php
			style.css
			tag.php</code></pre>
<h3 id="wp-includes">Files in the /wp-includes/ directory</h3>
<pre><code>/wp-includes/
	/Text/
		Diff
		Diff.php
	admin-bar.php
	atomlib.php
	author-template.php
	bookmark-template.php
	bookmark.php
	cache.php
	canonical.php
	capabilities.php
	category-template.php
	category.php
	class-IXR.php
	class-feed.php
	class-http.php
	class-json.php
	class-oembed.php
	class-phpass.php
	class-phpmailer.php
	class-pop3.php
	class-simplepie.php
	class-smtp.php
	class-snoopy.php
	class-wp-admin-bar.php
	class-wp-ajax-response.php
	class-wp-editor.php
	class-wp-error.php
	class-wp-http-ixr-client.php
	class-wp-walker.php
	class-wp-xmlrpc-server.php
	class-wp.php
	class.wp-dependencies.php
	class.wp-scripts.php
	class.wp-styles.php
	comment-template.php
	comment.php
	compat.php
	cron.php
	/css/
		admin-bar-rtl.css
		admin-bar-rtl.dev.css
		admin-bar.css
		admin-bar.dev.css
		editor-buttons.css
		editor-buttons.dev.css
		jquery-ui-dialog.css
		jquery-ui-dialog.dev.css
		wp-pointer.css
		wp-pointer.dev.css
	default-constants.php
	default-filters.php
	default-widgets.php
	deprecated.php
	feed-atom-comments.php
	feed-atom.php
	feed-rdf.php
	feed-rss.php
	feed-rss2-comments.php
	feed-rss2.php
	feed.php
	formatting.php
	functions.php
	functions.wp-scripts.php
	functions.wp-styles.php
	general-template.php
	http.php
	/images/
		admin-bar-sprite.png
		arrow-pointer-blue.png
		blank.gif
		/crystal/
			archive.png
			audio.png
			code.png
			default.png
			document.png
			interactive.png
			license.txt
			spreadsheet.png
			text.png
			video.png
		down_arrow.gif
		icon-pointer-flag.png
		rss.png
		/smilies/
			icon_arrow.gif
			icon_biggrin.gif
			icon_confused.gif
			icon_cool.gif
			icon_cry.gif
			icon_eek.gif
			icon_evil.gif
			icon_exclaim.gif
			icon_idea.gif
			icon_lol.gif
			icon_mad.gif
			icon_mrgreen.gif
			icon_neutral.gif
			icon_question.gif
			icon_razz.gif
			icon_redface.gif
			icon_rolleyes.gif
			icon_sad.gif
			icon_smile.gif
			icon_surprised.gif
			icon_twisted.gif
			icon_wink.gif
		toggle-arrow.png
		upload.png
		/wlw/
			wp-comments.png
			wp-icon.png
			wp-watermark.png
		wpicons.png
		wpmini-blue.png
		xit.gif
	/js/
		admin-bar.dev.js
		admin-bar.js
		autosave.dev.js
		autosave.js
		colorpicker.dev.js
		colorpicker.js
		comment-reply.dev.js
		comment-reply.js
		/crop/
			cropper.css
			cropper.js
			marqueeHoriz.gif
			marqueeVert.gif
		hoverIntent.dev.js
		hoverIntent.js
		/imgareaselect/
			border-anim-h.gif
			border-anim-v.gif
			imgareaselect.css
			jquery.imgareaselect.dev.js
			jquery.imgareaselect.js
		/jcrop/
			Jcrop.gif
			jquery.Jcrop.css
			jquery.Jcrop.dev.js
			jquery.Jcrop.js
		/jquery/
			jquery.color.dev.js
			jquery.color.js
			jquery.form.dev.js
			jquery.form.js
			jquery.hotkeys.dev.js
			jquery.hotkeys.js
			jquery.js
			jquery.query.js
			jquery.schedule.js
			jquery.serialize-object.js
			jquery.table-hotkeys.dev.js
			jquery.table-hotkeys.js
			suggest.dev.js
			suggest.js
			/ui/
				jquery.effects.blind.min.js
				jquery.effects.bounce.min.js
				jquery.effects.clip.min.js
				jquery.effects.core.min.js
				jquery.effects.drop.min.js
				jquery.effects.explode.min.js
				jquery.effects.fade.min.js
				jquery.effects.fold.min.js
				jquery.effects.highlight.min.js
				jquery.effects.pulsate.min.js
				jquery.effects.scale.min.js
				jquery.effects.shake.min.js
				jquery.effects.slide.min.js
				jquery.effects.transfer.min.js
				jquery.ui.accordion.min.js
				jquery.ui.autocomplete.min.js
				jquery.ui.button.min.js
				jquery.ui.core.min.js
				jquery.ui.datepicker.min.js
				jquery.ui.dialog.min.js
				jquery.ui.draggable.min.js
				jquery.ui.droppable.min.js
				jquery.ui.mouse.min.js
				jquery.ui.position.min.js
				jquery.ui.progressbar.min.js
				jquery.ui.resizable.min.js
				jquery.ui.selectable.min.js
				jquery.ui.slider.min.js
				jquery.ui.sortable.min.js
				jquery.ui.tabs.min.js
				jquery.ui.widget.min.js
		json2.dev.js
		json2.js
		/plupload/
			changelog.txt
			handlers.dev.js
			handlers.js
			license.txt
			plupload.flash.js
			plupload.flash.swf
			plupload.html4.js
			plupload.html5.js
			plupload.js
			plupload.silverlight.js
			plupload.silverlight.xap
		prototype.js
		quicktags.dev.js
		quicktags.js
		/scriptaculous/
			MIT-LICENSE
			builder.js
			controls.js
			dragdrop.js
			effects.js
			scriptaculous.js
			slider.js
			sound.js
			unittest.js
			wp-scriptaculous.js
		swfobject.js
		/swfupload/
			handlers.dev.js
			handlers.js
			license.txt
			/plugins/
				swfupload.cookies.js
				swfupload.queue.js
				swfupload.speed.js
				swfupload.swfobject.js
			swfupload-all.js
			swfupload.js
			swfupload.swf
		/thickbox/
			loadingAnimation.gif
			macFFBgHack.png
			tb-close.png
			thickbox.css
			thickbox.js
		/tinymce/
			/langs/
				wp-langs-en.js
				wp-langs.php
			license.txt
			/plugins/
				/directionality/
					editor_plugin.js
				/fullscreen/
					editor_plugin.js
					fullscreen.htm
				/inlinepopups/
					editor_plugin.js
					/skins/
						/clearlooks2/
							/img/
								alert.gif
								button.gif
								buttons.gif
								confirm.gif
								corners.gif
								drag.gif
								horizontal.gif
								vertical.gif
							window.css
					template.htm
				/media/
					/css/
						media.css
					editor_plugin.js
					/js/
						embed.js
						media.js
					media.htm
					moxieplayer.swf
				/paste/
					blank.htm
					editor_plugin.js
					/js/
						pastetext.js
						pasteword.js
					pastetext.htm
					pasteword.htm
				/spellchecker/
					changelog.txt
					/classes/
						EnchantSpell.php
						GoogleSpell.php
						PSpell.php
						PSpellShell.php
						SpellChecker.php
						/utils/
							JSON.php
							Logger.php
					config.php
					/css/
						content.css
					editor_plugin.js
					/img/
						wline.gif
					/includes/
						general.php
					rpc.php
				/tabfocus/
					editor_plugin.js
				/wordpress/
					/css/
						content.css
					editor_plugin.dev.js
					editor_plugin.js
					/img/
						audio.gif
						embedded.png
						image.gif
						media.gif
						more_bug.gif
						page.gif
						page_bug.gif
						trans.gif
						video.gif
				/wpdialogs/
					editor_plugin.dev.js
					editor_plugin.js
					/js/
						popup.dev.js
						popup.js
						wpdialog.dev.js
						wpdialog.js
				/wpeditimage/
					/css/
						editimage-rtl.css
						editimage.css
					editimage.html
					editor_plugin.dev.js
					editor_plugin.js
					/img/
						delete.png
						image.png
					/js/
						editimage.dev.js
						editimage.js
				/wpfullscreen/
					editor_plugin.js
					fullscreen.htm
				/wpgallery/
					editor_plugin.dev.js
					editor_plugin.js
					/img/
						delete.png
						edit.png
						gallery.png
						t.gif
				/wplink/
					editor_plugin.dev.js
					editor_plugin.js
			/themes/
				/advanced/
					about.htm
					anchor.htm
					charmap.htm
					color_picker.htm
					editor_template.js
					image.htm
					/img/
						colorpicker.jpg
						flash.gif
						gotmoxie.png
						icons.gif
						iframe.gif
						pagebreak.gif
						quicktime.gif
						realmedia.gif
						shockwave.gif
						trans.gif
						video.gif
						windowsmedia.gif
					/js/
						about.js
						anchor.js
						charmap.js
						color_picker.js
						image.js
						link.js
						source_editor.js
					link.htm
					shortcuts.htm
					/skins/
						/default/
							content.css
							dialog.css
							/img/
								buttons.png
								items.gif
								menu_arrow.gif
								menu_check.gif
								progress.gif
								tabs.gif
							ui.css
						/highcontrast/
							content.css
							dialog.css
							ui.css
						/o2k7/
							content.css
							dialog.css
							/img/
								button_bg.png
								button_bg_black.png
								button_bg_silver.png
							ui.css
							ui_black.css
							ui_silver.css
						/wp_theme/
							content.css
							dialog.css
							/img/
								tabs.gif
							ui.css
					source_editor.htm
			tiny_mce.js
			tiny_mce_popup.js
			/utils/
				editable_selects.js
				form_utils.js
				mctabs.js
				validate.js
			wp-mce-help.php
			wp-tinymce.js.gz
			wp-tinymce.php
		tw-sack.dev.js
		tw-sack.js
		wp-ajax-response.dev.js
		wp-ajax-response.js
		wp-list-revisions.dev.js
		wp-list-revisions.js
		wp-lists.dev.js
		wp-lists.js
		wp-pointer.dev.js
		wp-pointer.js
		wplink.dev.js
		wplink.js
	kses.php
	l10n.php
	link-template.php
	load.php
	locale.php
	media.php
	meta.php
	ms-blogs.php
	ms-default-constants.php
	ms-default-filters.php
	ms-deprecated.php
	ms-files.php
	ms-functions.php
	ms-load.php
	ms-settings.php
	nav-menu-template.php
	nav-menu.php
	pluggable-deprecated.php
	pluggable.php
	plugin.php
	/pomo/
		entry.php
		mo.php
		po.php
		streams.php
		translations.php
	post-template.php
	post-thumbnail-template.php
	post.php
	query.php
	registration-functions.php
	registration.php
	rewrite.php
	rss-functions.php
	rss.php
	script-loader.php
	shortcodes.php
	taxonomy.php
	template-loader.php
	/theme-compat/
		comments-popup.php
		comments.php
		footer.php
		header.php
		sidebar.php
	theme.php
	update.php
	user.php
	vars.php
	version.php
	widgets.php
	wlwmanifest.xml
	wp-db.php
	wp-diff.php</code></pre>
<hr />
<p><small>© 2012 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2012/05/complete-list-wordpress-files/">Permalink</a> | <a href="http://digwp.com/2012/05/complete-list-wordpress-files/#comments">25 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2012/05/complete-list-wordpress-files/&title=Complete List of Default WordPress Files">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/files/" rel="tag">files</a>, <a href="http://digwp.com/tag/reference/" rel="tag">reference</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2012/05/complete-list-wordpress-files/feed/</wfw:commentRss>
		<slash:comments>25</slash:comments>
		</item>
		<item>
		<title>Poll: www. or no www.?</title>
		<link>http://digwp.com/2012/05/poll-www-no-www/</link>
		<comments>http://digwp.com/2012/05/poll-www-no-www/#comments</comments>
		<pubDate>Thu, 03 May 2012 00:20:41 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[polls]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=5980</guid>
		<description><![CDATA[This one&#8217;s self-explanatory, but a lot has changed so I thought I&#8217;d poll one up to see what people think. It seems there are a lot more sites these days without the www. in their canonical URLs, but a lot of big sites continue to include the &#8220;www&#8221; subdomain (think Google home page). Which one [...]]]></description>
			<content:encoded><![CDATA[<p>This one&#8217;s self-explanatory, but a lot has changed so I thought I&#8217;d poll one up to see what people think. It seems there are a lot more sites these days <em>without</em> the <strong>www.</strong> in their canonical <abbr title="Uniform Resource Locator">URL</abbr>s, but a lot of big sites continue to include the &#8220;www&#8221; subdomain (think Google home page). Which one is best? Let&#8217;s find out.. </p>
<p><span id="more-5980"></span></p>
<p>In this poll, you&#8217;re asked whether you <em>prefer</em> URLs with or without the extra <code>www.</code> subdomain. But you have to choose one or the other &mdash; no &#8220;other/undecided&#8221; votes allowed on this one ;) </p>
<p>Okay, drumroll please..</p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
<hr />
<p><small>© 2012 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2012/05/poll-www-no-www/">Permalink</a> | <a href="http://digwp.com/2012/05/poll-www-no-www/#comments">19 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2012/05/poll-www-no-www/&title=Poll: www. or no www.?">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/polls/" rel="tag">polls</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2012/05/poll-www-no-www/feed/</wfw:commentRss>
		<slash:comments>19</slash:comments>
		</item>
		<item>
		<title>Attach Unattached Media Files</title>
		<link>http://digwp.com/2012/05/attach-unattached-media-files/</link>
		<comments>http://digwp.com/2012/05/attach-unattached-media-files/#comments</comments>
		<pubDate>Tue, 01 May 2012 16:24:29 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[attachments]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=5832</guid>
		<description><![CDATA[Attaching any unattached media files that you may have floating around is a good way to keep things organized and running smooth. Normally, when you&#8217;re working on a post in the Edit Post screen, you click the Upload/Insert button and use the nifty drag-n-drop media uploader to get &#8216;er done. When you upload your media [...]]]></description>
			<content:encoded><![CDATA[<p>Attaching any unattached media files that you may have floating around is a good way to keep things organized and running smooth. Normally, when you&#8217;re working on a post in the <strong>Edit Post</strong> screen, you click the <strong>Upload/Insert</strong> button and use the nifty drag-n-drop media uploader to get &#8216;er done. When you upload your media files in this manner, WordPress &#8220;knows&#8221; that you want to attach the file to that particular post. Super straightforward sure, but there are situations where WordPress <em>doesn&#8217;t know</em> which post to use. In this <abbr title="Digging into WordPress">DigWP</abbr> post, we walk through the process of finding unattached media files and attaching them to their respective posts.</p>
<p><span id="more-5832"></span></p>
<h3>Why media files may be &#8220;unattached&#8221;</h3>
<p>Basically, WordPress needs to know which post to attach the file to, so if that information isn&#8217;t available, the file&#8217;s status is set to &#8220;unattached&#8221;. For example, if you have a bunch of images attached to a post, and then delete the post, the images are still visible in the <strong>Media Library</strong> and still exist in the <code>/wp-content/uploads/</code> directory, but they will be <em>unattached</em> to any particular post.</p>
<p>Another reason why you might have unattached media files is because they were uploaded directly through the <strong>Media Library</strong> instead of through a specific post. Some WordPress users like to upload lots of images up-front, before creating any posts. Are there other ways that media files become unattached? Possibly, but ultimately it doesn&#8217;t matter because it&#8217;s relatively straightforward to locate all unattached files and attach them to specific posts. Well, it is once you know how to do it..</p>
<h3>How to find your unattached media files</h3>
<p>Eliminating and/or organizing rogue files of <em>any type</em> is good practice for running a tight ship, whether it be media files, theme files, or other project files laying around on the server. When it comes to cleaning up your media files, WordPress provides two easy ways of locating everything that&#8217;s not attached to a specific post.</p>
<p><img src="http://digwp.com/wp-content/uploads/2012/04/wp-attach-media-01.jpg" alt="Attach Unattached Media Files - Step 1: Find unattached media files"></p>
<p>As seen in the previous image, the first and easiest way to find and attach your files is to click the <strong>Unattached</strong> link (1) at the top of the <strong>Media Library</strong> page. That will list all of your unattached files along with a quick link to <strong>Attach</strong> (2) the file to a specific post. This is also the second way to find unattached images, as the &#8220;Attach&#8221; link is easy to spot among all of your attached media files.</p>
<h3>How to attach your unattached media files</h3>
<p>Once you&#8217;ve found some unattached files, you&#8217;re ready to attach them to their rightful posts. There are several ways to do this, depending on where you&#8217;re at in the WordPress Admin. </p>
<ul>
<li>If you&#8217;re on the <strong>Media Library</strong> page, then you&#8217;ll see the <strong>Attach</strong> link next to the unattached file (see previous image).</li>
<li>If you&#8217;re already viewing the list of &#8220;Unattached&#8221; images, you can hover over a specific file to reveal its <strong>Attach</strong> link.</li>
<li>If you&#8217;re working on a post, click the <strong>Upload/Insert</strong> button, go to the <strong>Media Library</strong> tab, search for the image, and click the <strong>Insert into Post</strong> button.</li>
</ul>
<p>Here is a screenshot showing the &#8220;Attach&#8221; link next the file in the list of &#8220;Unattached&#8221; files:</p>
<p><img src="http://digwp.com/wp-content/uploads/2012/04/wp-attach-media-02.jpg" alt="Attach Unattached Media Files - Step 2: Click the 'Attach' button"></p>
<p>After clicking the &#8220;Attach&#8221; link, a popup window will appear, like so:</p>
<p><img src="http://digwp.com/wp-content/uploads/2012/04/wp-attach-media-03.jpg" alt="Attach Unattached Media Files - Step 3: Enter the post title and click search"></p>
<p>At this point we see some room for improvement, in that you sort of have to &#8220;know&#8221; in advance the title or contents of the post to which the file should be attached. If you&#8217;re not sure and just want to sort of browse through existing posts to find the best one, try searching with some relevant/related search terms. If you really have no idea which post to use, try searching for a super-common word like &#8220;the&#8221; or &#8220;a&#8221; and you&#8217;ll get the first 30 or so posts. Unfortunately at this time there is no way to navigate through more than the first set of results, but it may be enough to get you there. It would be good to have this option in the future (hint hint).</p>
<p><img src="http://digwp.com/wp-content/uploads/2012/04/wp-attach-media-04.jpg" alt="Attach Unattached Media Files - Step 4: Choose the correct post and click 'Select'"></p>
<p>Once you&#8217;ve found the post that you would like to use, select it and click the <strong>Select</strong> button, as shown in the previous image. That&#8217;s all it takes, after clicking &#8220;Select&#8221; WordPress does its thing and the file is attached to the selected post.</p>
<h3>How to un-attach media files</h3>
<p>Wrapping up, just wanted to point out another area where WordPress could be improved. As far as I know, there is no way to &#8220;un-attach&#8221; media files from their respective posts <em>from within the Admin area</em>. Unless somebody knows a way of doing so, the only way seems to be complete deletion of the media file in question. When working with a lot of files, each with their own meta information, this can be a rather unpleasant experience, but I digress.. Yes you can always attach the file to <em>another</em> post, but that doesn&#8217;t change the post to which it was first attached. To change that information, it&#8217;s either a trip to the database or delete the file and start over.</p>
<h3>1-minute summary</h3>
<p>To attach an unattached media file, find an <strong>Attach</strong> link, select the desired post from the list, and click the <strong>Select</strong> button. Alternately, if you&#8217;re working on a post, click the <strong>Upload/Insert</strong> button, visit the <strong>Media Library</strong> tab, locate and select the desired post, and click the <strong>Insert into Post</strong> button.</p>
<p>Taking the time to clean-up and organize your files is a great way to improve the efficiency and maintainability of your website.</p>
<p>That&#8217;s all for now, Happy attaching :)</p>
<hr />
<p><small>© 2012 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2012/05/attach-unattached-media-files/">Permalink</a> | <a href="http://digwp.com/2012/05/attach-unattached-media-files/#comments">13 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2012/05/attach-unattached-media-files/&title=Attach Unattached Media Files">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/admin/" rel="tag">Admin</a>, <a href="http://digwp.com/tag/attachments/" rel="tag">attachments</a>, <a href="http://digwp.com/tag/tips/" rel="tag">tips</a>, <a href="http://digwp.com/tag/tricks/" rel="tag">tricks</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2012/05/attach-unattached-media-files/feed/</wfw:commentRss>
		<slash:comments>13</slash:comments>
		</item>
		<item>
		<title>Measuring Latency with Apache Bench</title>
		<link>http://digwp.com/2012/04/measure-latency-apache-bench/</link>
		<comments>http://digwp.com/2012/04/measure-latency-apache-bench/#comments</comments>
		<pubDate>Mon, 16 Apr 2012 18:31:33 +0000</pubDate>
		<dc:creator>Austin Gunter</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[optimization]]></category>
		<category><![CDATA[performance]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=5920</guid>
		<description><![CDATA[One of the important factors in the speed of your site is the distance between your servers and the browser visiting your site. The time it takes the information to travel from the server to the browser is called latency. Latency increases with distance, so no matter how fast your servers may be, high latency [...]]]></description>
			<content:encoded><![CDATA[<p>One of the important factors in the speed of your site is the distance between your servers and the browser visiting your site.  The time it takes the information to travel from the server to the browser is called <strong>latency</strong>. Latency increases with distance, so no matter how fast your servers may be, high latency can make your site load slowly for visitors who are geographically removed from your servers. </p>
<p><span id="more-5920"></span></p>
<p>Since there are plenty of places to measure your site speed online, this article goes into detail of how to measure your site latency using <a href="http://httpd.apache.org/docs/2.0/programs/ab.html" title="ab - Apache HTTP server benchmarking tool">Apache Bench</a>. This is helpful because you&#8217;ll know how to make educated hosting decisions, AND after running the following test, you&#8217;ll be familiar with Apache Bench, a useful tool for site administration.</p>
<h3>Less latency = faster websites?</h3>
<p>The question of latency came up when WP Engine, a managed WordPress hosting provider, and the company I work for, began fielding support calls from Asian and Pacific geographies. They had a variety of questions about our hosting, but we answered the same question about latency several times:</p>
<blockquote><p>&#8220;How much faster would my site be to me if I moved it to another location?&#8221;</p></blockquote>
<p>We decided that it would be helpful to share a tutorial of how to answer this question for those so inclined.</p>
<p>This question often came from an Asian country who was asking if their site would load faster on their continent if they moved their hosting from North American servers to Asian servers. The distance between the browser and the server are an important factor in how quickly a page will load in a browser. It will simply take longer for a page to load in China if it is being served from Dallas, Texas instead of Beijing.  </p>
<p>It&#8217;s fair to say that most, if not all, big WordPress sites have visitors from across the globe, so it can be useful to know how to test the relative speed differences between hosting companies or locations, so we&#8217;ll show you how to use Apache Bench to do that.</p>
<h3>Defining terms</h3>
<p>First off, lets define terms. We&#8217;re measuring latency rather than total speed. That is, we&#8217;re concerned with the time it takes the first byte to appear in the browser, not the time it takes all the bytes to appear.</p>
<p>That&#8217;s because distance typically increases latency but not throughput.</p>
<p>For example, suppose a browser in London is hitting a server in New York City. First it has to make the request for the page &mdash; traversing the Atlantic or bouncing off a satellite &mdash; then the server starts sending the response, which now also has to move across the Atlantic.</p>
<p>Let&#8217;s call the length of time to move across the ocean <strong>L</strong> (for Latency) and the length of time the server takes to start sending bytes <strong>S</strong> (for Server-Speed). Then the time of this transaction is:</p>
<p><strong><code>2L + S</code></strong></p>
<p>Actually, in reality it&#8217;s worse than that. That&#8217;s just the <abbr title="Hypertext Transfer Protocol">HTTP</abbr> request, and before that even happens you have to establish the <abbr title="Transmission Control Protocol/Internet Protocol">TCP/IP</abbr> connection, which takes another back-and-forth (actually there&#8217;s <em>three</em> legs to that protocol, but we&#8217;ll gloss over that detail), so the true equation is:</p>
<p><strong><code>4L + S</code></strong></p>
<p>If the browser is in New York City, <strong>L</strong> will be small, perhaps as little as 40ms. Whereas even on very fast servers like we have at WP Engine <strong>S</strong> is at least 250ms, and typical hosting providers with page-cache plugins have 500ms of <strong>S</strong>. Without page caching <strong>S</strong> could be up to 1-4 seconds. Therefore, when you&#8217;re close to the server, <strong>S</strong> dominates the equation, and the speed of the server is the most important factor.</p>
<p>However, with a browser request from London, <strong>L</strong> is easily 500-750ms. With a fast server the latency is an order of magnitude more time than the server time. At great distances, the latency will completely determine the apparent speed of the site.</p>
<h3>Measuring Latency with Apache Bench</h3>
<p>So how do you easy measure latency in the field? And in particular, how would we measure the difference between identical servers in London and <abbr title="New York City">NYC</abbr>?</p>
<p>There&#8217;s a simple, free tool from Apache called <strong>Apache Bench</strong>, which we recommend for basic tests like these (and many other too). You can run Apache Bench from Terminal on a Mac, or Putty on Windows. There are other options depending on how secure you want to be.</p>
<p>To make sure it&#8217;s working for you, let&#8217;s see what happens when you run it once on our company homepage:</p>
<p><code>ab http://wpengine.com/</code><br />
<small><em>(Note the trailing slash &#8212; ab is finicky about that!)</em></small></p>
<p>A successful test will look like this:</p>
<p><img src="http://digwp.com/wp-content/uploads/2012/04/apache-bench-01.jpg" alt="Notice the Standard Deviation" title="Apache Bench Test 1" /><br /><small><em>Apache Bench Test 1</em></small></p>
<p>Now the trouble with making just one request is that there&#8217;s all kinds of errors that can happen. For example, maybe someone two houses down just started downloading 17 simultaneous bittorrents of porn. That will mess up your results.</p>
<p>So what we really need is to run <strong>N</strong> trials and aggregate the results. ab can do that. Suppose <strong>N</strong> is 100, and just do this:</p>
<p><code>ab -n 100 http://wpengine.com/</code></p>
<p>Now the results are more interesting, showing us average and standard deviation:</p>
<p><img src="http://digwp.com/wp-content/uploads/2012/04/apache-bench-02.jpg" alt="Notice the Standard Deviation" title="Latency Test 2" /><br /><small><em>Apache Bench Test 2</em></small></p>
<p>The &#8220;standard deviation&#8221; tells you how much error is there. Assuming a normal distribution of results (which seems appropriate), 95% of the results fall within +/- 2 standard deviations. Even if the distribution is not normal, at least 75% of the results fall within +/- 2.</p>
<p>In particular, check out the &#8220;time to connect&#8221; and &#8220;time to start,&#8221; which show the 2<strong>L</strong> time to establish the TCP/IP connection and the additional 2<strong>L</strong> + <strong>S</strong> time to request the page and start getting the data.</p>
<p>In fact, just from these two data points we can compute <strong>L</strong> and <strong>S</strong>!  After all, we have:</p>
<pre><code>(1)   2L = A
(2)   2L + S = B</code></pre>
<p>So subtracting <strong>(1)</strong> from <strong>(2)</strong> we find that <strong>B &#8211; A = S</strong>, and <strong>A/2 = L</strong>. Now, this is just an estimate because, remember, there&#8217;s lots of potential error and variation here. Still, it&#8217;s a good bit of data to gather.</p>
<p>Now of course we only have to run the same command from a machine in another location to find the difference in <strong>L</strong>.</p>
<p>So to solve the original problem, the person in London can run Apache Bench against a copy of her blog in London and the live one in NYC to see the difference.</p>
<p>This is a helpful method to check your site&#8217;s latency in various geographic locations. Just because it&#8217;s blazing fast in the US, does not mean that your customer in Europe or Asia will be getting served as quickly, especially if the closest server is far away.</p>
<p>Let us know what you think! How else are you guys using Apache Bench, or how has measuring this latency changed the way you&#8217;re managing your WordPress?</p>
<h3>About the author</h3>
<p>This guest post is by Austin Gunter, blogger and brand ambassador for WP Engine. WP Engine offers <a href="http://wpengine.com/" target="_blank">fast WordPress hosting</a> that is optimized for speed and security. They also like breakfast tacos and long walks along the server beach.</p>
<hr />
<p><small>© 2012 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2012/04/measure-latency-apache-bench/">Permalink</a> | <a href="http://digwp.com/2012/04/measure-latency-apache-bench/#comments">8 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2012/04/measure-latency-apache-bench/&title=Measuring Latency with Apache Bench">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/optimization/" rel="tag">optimization</a>, <a href="http://digwp.com/tag/performance/" rel="tag">performance</a>, <a href="http://digwp.com/tag/tips/" rel="tag">tips</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2012/04/measure-latency-apache-bench/feed/</wfw:commentRss>
		<slash:comments>8</slash:comments>
		</item>
		<item>
		<title>Smarter Slugs ~!@$%^&amp;*()={}[]?</title>
		<link>http://digwp.com/2012/01/smarter-slugs/</link>
		<comments>http://digwp.com/2012/01/smarter-slugs/#comments</comments>
		<pubDate>Tue, 24 Jan 2012 19:39:26 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[permalink]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=5620</guid>
		<description><![CDATA[See those crazy characters in the title of this post? Now see how they don&#8217;t appear in the post&#8217;s URL? That&#8217;s one of the finer details of the WordPress 3.3 update: smarter permalink slugs. So when you type something like you see in the title of this post, with all the funky characters, or even [...]]]></description>
			<content:encoded><![CDATA[<p>See those crazy characters in the title of this post? Now see how they <em>don&#8217;t</em> appear in the post&#8217;s URL? That&#8217;s one of the <em>finer details</em> of the WordPress 3.3 update: <strong>smarter permalink slugs</strong>.</p>
<p><span id="more-5620"></span></p>
<p>So when you type something like you see in the title of this post, with all the funky characters, or even just something like a comma, apostrophe, or semi-colon, WordPress 3.3+ works the magic and automatically creates your post slug without the junk. </p>
<h3>Details.</h3>
<p>It may not seem like a big deal, but previous versions of WordPress would include those funky characters when auto-creating your permalink slugs. If you glance at URLs while surfing around WordPress-powered sites, keep an eye on the URL in the address bar. It&#8217;s common to see all sorts of non-alphanumeric stuff in there.</p>
<p>Does it matter? I think so, for numerous reasons:</p>
<ul>
<li><strong>Readability, consistency</strong> &ndash; simple alphanumeric URLs work great everywhere, no need to clutter them up with redundant information. For example, funky characters can choke URL-shortening services. Also: fewer characters, facilitates better comprehension.</li>
<li><strong>Safer</strong> &ndash; certain characters such as <code>`</code>, <code>^</code>, <code>"</code>, <code>~</code>, <code>#</code>, <code>%</code>, <code>|</code>, <code>\</code>, <code>&lt;</code>, <code>&gt;</code>, <code>"</code>, <code>~</code>, <code>[</code>, <code>]</code>, <code>{</code>, <code>}</code>, and the blank space are considered as unsafe and should not be included in the URI (ie., always need encoded). Including them may seem to work, but you&#8217;re introducing sort of unknown variable into the mix, a potential vulnerability<a href="#ref" title="Jump to reference link">*</a></li>
<li><strong>SEO</strong> &mdash; do funky characters like blank spaces and percentage signs in the URL <em>hurt</em> your site&#8217;s SEO? Maybe not, but why put anything in there that <em>isn&#8217;t</em> a keyword?</li>
</ul>
<p>So smarter auto-slugs in WordPress 3.3, another one of the <em>finer details</em> that improves the overall WP post-editing experience, and something you may not have noticed.</p>
<h3>Bonus tip</h3>
<p>Another sort of related &ldquo;smarter-slugs&rdquo; feature noticed while looking into it, is the automatic removal of the &ldquo;-2&rdquo; that WordPress automatically appends to the post slug when a duplicate is detected. So for example, say you&#8217;re working on a new post:</p>
<ol>
<li>Create a post with a slug such as &ldquo;<code>test-post</code>&rdquo;</li>
<li>Delete the post and send to the Trash</li>
<li>Create another post with the same &ldquo;<code>test-post</code>&rdquo; slug</li>
<li>WordPress detects the duplicate post in the database and appends a &ldquo;-2&rdquo;, like so: <code>test-post-2</code> to the post slug</li>
<li>Create yet another post with the same slug and WordPress will append a &ldquo;-3&rdquo;, and so on..</li>
</ol>
<p>Nobody likes the &ldquo;dash-twos&rdquo; but they are required for the auto-creation of non-duplicate post slugs. What I just noticed with version 3.3 is that, once you empty the Trash, <strong>WordPress automagically removes the &ldquo;-2&rdquo; from the post slug</strong>, improving workflow to save you time. This may have changed in a previous version and I just hadn&#8217;t noticed, or it&#8217;s another one of the <em>administrative refinements</em> of WordPress 3.3.</p>
<p><strong>Update:</strong> it looks like the -2 removal only applies to <strong>drafts</strong> and <strong>pending</strong> posts, not to posts that have already been published.. (see <a href="#comment-32497">comment from Otto</a>)</p>
<p id="ref"><strong>*</strong> More info on <a href="http://perishablepress.com/press/2009/03/08/building-the-perishable-press-4g-blacklist/" title="Building the Perishable Press 4G Blacklist">forbidden characters and blocking them</a></p>
<hr />
<p><small>© 2012 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2012/01/smarter-slugs/">Permalink</a> | <a href="http://digwp.com/2012/01/smarter-slugs/#comments">16 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2012/01/smarter-slugs/&title=Smarter Slugs ~!@$%^&#038;*()={}<>[]?">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/permalink/" rel="tag">permalink</a>, <a href="http://digwp.com/tag/tips/" rel="tag">tips</a>, <a href="http://digwp.com/tag/tricks/" rel="tag">tricks</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2012/01/smarter-slugs/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Goodbye Admin Bar, Hello Toolbar</title>
		<link>http://digwp.com/2012/01/goodbye-admin-bar-hello-toolbar/</link>
		<comments>http://digwp.com/2012/01/goodbye-admin-bar-hello-toolbar/#comments</comments>
		<pubDate>Fri, 13 Jan 2012 21:24:40 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[admin-bar]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=5574</guid>
		<description><![CDATA[When the Admin Bar hit the streets in WordPress 3.1, people seemed to either love it or hate it. And rightly so, it was a significant change in the appearance of the WP Admin area, and if not disabled in your User Profile, the front-end of your site as well. Many tips, tricks and plugins [...]]]></description>
			<content:encoded><![CDATA[<p>When the Admin Bar hit the streets in WordPress 3.1, people seemed to <a title="Poll: Love or Hate the WordPress Admin Bar" href="http://digwp.com/2011/04/poll-love-hate-admin-bar/">either love it or hate it</a>. And rightly so, it was a significant change in the appearance of the WP Admin area, and if not disabled in your <em>User Profile</em>, the front-end of your site as well. Many <a title="Admin Bar Tricks" href="http://digwp.com/2011/04/admin-bar-tricks/">tips, tricks and plugins for customizing the Admin Bar</a> began appearing around the Web. And then just as the dust began to settle, BAM — the &#8220;Admin Bar&#8221; transforms into the &#8220;Toolbar&#8221; with the <a href="http://wordpress.org/news/2011/12/sonny/">WordPress 3.3 update</a>.</p>
<p><span id="more-5574"></span></p>
<p>The WordPress 3.3 update focused heavily on streamlining and optimizing the Admin experience. The Admin Bar of WP 3.1 was intended as the &#8220;first step toward a front-end editor&#8221;. The original Admin Bar was debated for several good reasons:</p>
<ul>
<li>It&#8217;s enabled on the front-end by default</li>
<li>Gobbles up too much vertical screen space</li>
<li>It&#8217;s redundant, all links available elsewhere</li>
<li>It&#8217;s not visually appealing in general</li>
</ul>
<p>Using the <a title="Admin Bar Tricks" href="http://digwp.com/2011/04/admin-bar-tricks/">many Admin Bar tricks</a> that became available around the Web, WordPress users dealt with the thing in their own way and moved on with their lives. Some use plugins, some custom snippets &amp; scripts, some just love it as-is. But now with the new 3.3 update, the <strong>big question</strong> is &#8220;what works and what doesn&#8217;t?&#8221; We&#8217;re glad you asked..</p>
<h3>Admin Bar is dead, long live the Toolbar</h3>
<p>If you&#8217;ve updated to <a href="http://codex.wordpress.org/Version_3.3">WP 3.3</a>, you&#8217;ve seen the smaller &#8220;Toolbar&#8221; tucked neat above the Admin area. The new <span style="text-decoration: line-through;">Admin Bar</span> Toolbar seems to address <em>some</em> of the main concerns about the old Admin Bar:</p>
<ul>
<li>No longer enabled on front-end by default</li>
<li>Uses less vertical screen space</li>
<li>Integrates the Admin header area, so no longer redundant</li>
<li>It looks a little better (in my opinion)</li>
</ul>
<p>For those who have not yet updated or have no idea what&#8217;s going on, here is a visual comparison of the old &#8220;Admin Bar&#8221; and the new &#8220;Toolbar&#8221;:</p>
<p><img src="http://digwp.com/wp-content/blog-images/wp-admin-bar-01.jpg" alt="[ The 'old' WP Admin Bar ]" /><br />
<small><em>Admin Bar: bigger, clunkier, and redundant</em></small></p>
<p><img src="http://digwp.com/wp-content/blog-images/wordpress-toolbar-01.jpg" alt="[ The 'new' WP Toolbar ]" /><br />
<small><em>Toolbar: smaller, simpler, and required</em></small></p>
<p>The new Toolbar certainly looks better, but <a title="WP Forum &gt; Hiding admin bar in WordPress 3.3" href="http://wordpress.org/support/topic/hiding-admin-bar-in-wordpress-33">concerns remain</a>. From what I&#8217;ve gathered, the main gripe is that the Toolbar is <em>mandatory</em>, and possibly still redundant, depending on site setup and configuration (plugins, networks, etc.). Is it really <em>mandatory</em>? That sounds silly to me, but seems to be the case:</p>
<p><img src="http://digwp.com/wp-content/blog-images/wp-admin-bar.jpg" alt="[ The 'old' WP Admin Bar ]" /><br />
<small><em>User Profile settings for the old Admin Bar: full control</em></small></p>
<p><img src="http://digwp.com/wp-content/blog-images/wordpress-toolbar.jpg" alt="[ The 'new' WP Toolbar ]" /><br />
<small><em>User Profile settings for the Toolbar: bamboozled! No option to disable for back-end</em></small></p>
<p>So yeah, <em>something changed</em>, so the question for the Admin Toolbar is “<strong>what works and what doesn&#8217;t?</strong>” Let&#8217;s dig in and see what&#8217;s up..</p>
<h3>Admin Bar changes, now WP Toolbar</h3>
<p>As <a href="http://wordpress.org/support/topic/hiding-admin-bar-in-wordpress-33#post-2495448">Ipstenu puts it</a>: &#8220;You don&#8217;t have to like it, but it&#8217;s here to stay.&#8221; So it&#8217;s time to look at things practically and get on with it. First of all, if you have a plugin or functions script that hides, removes, or customizes the Admin Bar, definitely investigate to see if everything is still working according to plan.</p>
<h4>What works..</h4>
<p>After some testing, we&#8217;ve seen the following <code>functions.php</code> snippets continue to work in WordPress version 3.3:</p>
<pre><code>// disable the admin bar (front end only) show_admin_bar(false); // disable the admin bar (front end only) add_filter('show_admin_bar', '__return_false');</code></pre>
<p>In WP 3.1, these functions hid the Admin Bar on <em>both sides</em> of the fence — front end &amp; back end. In WP 3.3+, these snippets will hide the Admin Toolbar <strong>only on the front-end</strong> of your site (the public side). Likewise, this snippet of CSS added to your theme&#8217;s <code>style.css</code> file <em>hides</em> the Toolbar on the <em>front-end</em>:</p>
<pre><code>/* hide the admin bar (front end only) */ #wpadminbar { display:none; }</code></pre>
<p>Keep in mind that, when using the CSS method, the Toolbar markup is still present in the source code, but will not be displayed in the browser.</p>
<p>Here is another useful snippet for disabling the Toolbar for lesser users:</p>
<pre><code>// show admin bar only for admins if (!current_user_can('manage_options')) { add_filter('show_admin_bar', '__return_false'); } // show admin bar only for admins and editors if (!current_user_can('edit_posts')) { add_filter('show_admin_bar', '__return_false'); }</code></pre>
<p>Note that this also only applies to Toolbar display on the front-end.</p>
<h4>What doesn&#8217;t work..</h4>
<p>Basically the <code>show_admin_bar()</code> function seems to work as it did before version 3.3, except that now the Toolbar is integral to the Admin area, so disabling it using the previous functions works only on the front-end of your site. So tricks like this stopped working:</p>
<pre></pre>
<p>If you&#8217;re running WP 3.1+ or 3.2+ (not 3.3+), then <code>show_admin_bar()</code> will continue to disable the Admin Bar on both front and back ends of WordPress.</p>
<h3>Admin Bar plugins</h3>
<p>In our <a href="http://digwp.com/">book</a>, we provide a list of plugins to help with customizing the 3.1 Admin Bar. Now working on the <a href="http://digwp.com/2011/12/poll-results-book-news-and-more/">DiW 3.3 update</a>, it&#8217;s time to check these plugins for compatibility with <strong>WordPress 3.3</strong>. Here are the results:</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/admin-bar/">Admin Bar Remover</a> — disables Toolbar on front-end only</li>
<li><a href="http://wordpress.org/extend/plugins/wp-admin-bar-removal/">Admin Bar Removal</a> — doesn&#8217;t work in WP 3.3+</li>
<li><a href="http://wordpress.org/extend/plugins/admin-bar-disabler/">Admin Bar Disabler</a> — disables Toolbar on front-end only</li>
<li><a href="http://wordpress.org/extend/plugins/admin-bar-minimiser/">Admin Bar Minimiser</a> — hides/minimizes Toolbar on both sides of WP 3.3, but looks weird because of the existing Admin design. Also, in the Admin the hover/toggle button is <a href="http://digwp.com/wp-content/blog-images/wordpress-toolbar-02.jpg">invisible</a>.</li>
<li><a href="http://wordpress.org/extend/plugins/global-admin-bar-hide-or-remove/">Global Hide/Remove Admin Bar Plugin</a> — removes the User Profile Toolbar settings and removes Toolbar on front-end only</li>
<li><a href="http://wordpress.org/extend/plugins/hide-admin-bar-search/">Hide Admin Bar Search</a> — there is no search bar in WP 3.3</li>
<li><a href="http://wordpress.org/extend/plugins/stick-admin-bar-to-bottom/">Stick Admin Bar To Bottom</a> — works great on both sides of WP 3.3</li>
<li><a href="http://wordpress.org/extend/plugins/wp-custom-admin-bar/">WP Custom Admin Bar</a> — didn&#8217;t seem to work..</li>
<li><a href="http://blog.ftwr.co.uk/archives/2011/01/05/always-show-admin-bar/">Always show admin bar</a> — works in 3.3 but applies only to front-end</li>
<li><strong>Update:</strong> <a href="http://wordpress.org/extend/plugins/ultimate-admin-bar/">Ultimate Admin Bar</a> — puts it <em>all</em> in the Toolbar to further optimize your workflow</li>
</ul>
<p>If you know of others, shout em out and I&#8217;ll update the post.</p>
<h3>To be continued..</h3>
<p>Without a doubt things will continue to change, and it&#8217;ll be fun watching as WordPress continues to evolve, Toolbar and all :)</p>
<hr />
<p><small>© 2012 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2012/01/goodbye-admin-bar-hello-toolbar/">Permalink</a> | <a href="http://digwp.com/2012/01/goodbye-admin-bar-hello-toolbar/#comments">17 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2012/01/goodbye-admin-bar-hello-toolbar/&title=Goodbye Admin Bar, Hello Toolbar">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/admin/" rel="tag">Admin</a>, <a href="http://digwp.com/tag/admin-bar/" rel="tag">admin-bar</a>, <a href="http://digwp.com/tag/tips/" rel="tag">tips</a>, <a href="http://digwp.com/tag/tricks/" rel="tag">tricks</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2012/01/goodbye-admin-bar-hello-toolbar/feed/</wfw:commentRss>
		<slash:comments>17</slash:comments>
		</item>
		<item>
		<title>Clean Up Weird Characters in Database</title>
		<link>http://digwp.com/2011/07/clean-up-weird-characters-in-database/</link>
		<comments>http://digwp.com/2011/07/clean-up-weird-characters-in-database/#comments</comments>
		<pubDate>Mon, 18 Jul 2011 18:31:45 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[database]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[sql]]></category>
		<category><![CDATA[tips]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=4940</guid>
		<description><![CDATA[It&#8217;s been a crazy month, with lots of drama all over the place. Here at DigWP.com, we had an episode where the site was all screwed up and not loading or only partially loading, blank white pages, and the whole bit. During the process of keeping it together and trying to restore full functionality, numerous [...]]]></description>
			<content:encoded><![CDATA[<p>It&#8217;s been a crazy month, with lots of drama all over the place. Here at <a href="http://digwp.com/" title="Digging into WordPress">DigWP.com</a>, we had <a href="http://digwp.com/2011/06/dont-use-postname/" title="Clean Up Weird Characters in Database">an episode</a> where the site was all screwed up and not loading or only partially loading, blank white pages, and the whole bit. During the process of keeping it together and trying to restore full functionality, numerous database imports and exports were performed under a variety of circumstance. During the rush, apparently the most recent database backup file was somehow uncompressed outside of MySQL before final import. Several days later, that decompression/unzipping basically converted every quotation mark, em dash, en dash, ellipses and other special characters into some really ugly-looking codes.</p>
<p><span id="more-4940"></span></p>
<p><img src="http://digwp.com/wp-content/blog-images/weird-characters.png" alt="[ Weird Characters ]" /></p>
<h3>What are they?</h3>
<p>I <em>think</em> what happened is that the restoration database that we ended up using had been opened in a file/text editor. It&#8217;s just a guess, and sort of irrelevant, but the text editor converted our <abbr title="Universal Transformation Format-8 (character encoding)">UTF-8</abbr> characters into some other character set, like <abbr title="International Organization for Standardization (8859-1)">ISO-8859-1</abbr>. So after restoration, we ended up with hundreds of these weird characters in the database &ndash; quotes, hyphens, dashes, and ellipses were all converted to Klingon:</p>
<pre><code>â€œ = left quote = “
â€ = right quote = ”

â€˜ = left single quote = ‘
â€™ = right single quote = ’

â€” = en dash = –
â€“ = em dash = —

â€¢ = hyphen = -
â€¦ = ellipsis = …</code></pre>
<p>Identifying most of these characters was relatively painless, but the en-dash and em-dash characters may be reversed (i.e., <code>â€“</code> = em dash, and <code>â€”</code> = en dash). Testing the other character replacements in the database was easy, but discerning between instances of em &amp; en dashes proved futile. So do your own testing and make good backups before making any mass changes. Hopefully someone can help us out with more of the specifics.</p>
<h3>Clean &lsquo;em up</h3>
<p>Before making any changes to your database, make sure you have a good backup (or three). Then to clean up these weird characters from the WordPress database, use a program like <a href="http://www.phpmyadmin.net/">phpMyAdmin</a> to execute the following queries.</p>
<h4>Clean up post_content</h3>
<pre><code>UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€œ', '“');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€', '”');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€™', '’');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€˜', '‘');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€”', '–');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€“', '—');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€¢', '-');
UPDATE wp_posts SET post_content = REPLACE(post_content, 'â€¦', '…');</code></pre>
<h4>Clean up comment_content</h3>
<pre><code>UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€œ', '“');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€', '”');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€™', '’');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€˜', '‘');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€”', '–');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€“', '—');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€¢', '-');
UPDATE wp_comments SET comment_content = REPLACE(comment_content, 'â€¦', '…');</code></pre>
<h4>Other tables</h3>
<p>While cleaning up the DigWP database, several other weird characters also showed up in various places, but they were very few in number. I also noticed several instances of converted quotes, dashes, and hyphens scattered around in some other tables, mostly in the <code>options</code> table, buried deep within temporary <code>rss_</code> data. So I didn&#8217;t bother with anything beyond the <code>post_content</code> and <code>comment_content</code> tables, but easily could have done so by modifying the previous queries like so:</p>
<p><code>UPDATE [table_name] SET [col_name] = REPLACE([col_name], 'â€¦', '…');</code></p>
<p>Just replace <code>[table_name]</code> with whatever table you want to clean up, <code>col_name</code> with the column name, and then replicate or edit the query with the proper character replacements.</p>
<h3>Lesson learned</h3>
<p>Take-home message: don&#8217;t open your database in a text editor. But if you do, execute these SQL queries for easy clean-up.</p>
<hr />
<p><small>© 2011 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2011/07/clean-up-weird-characters-in-database/">Permalink</a> | <a href="http://digwp.com/2011/07/clean-up-weird-characters-in-database/#comments">20 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2011/07/clean-up-weird-characters-in-database/&title=Clean Up Weird Characters in Database">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/database/" rel="tag">database</a>, <a href="http://digwp.com/tag/mysql/" rel="tag">mysql</a>, <a href="http://digwp.com/tag/sql/" rel="tag">sql</a>, <a href="http://digwp.com/tag/tips/" rel="tag">tips</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2011/07/clean-up-weird-characters-in-database/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
		<item>
		<title>Leave the Visual Editor ON</title>
		<link>http://digwp.com/2011/05/visual-editor-on/</link>
		<comments>http://digwp.com/2011/05/visual-editor-on/#comments</comments>
		<pubDate>Mon, 23 May 2011 17:56:23 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[editing]]></category>
		<category><![CDATA[editor]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=3867</guid>
		<description><![CDATA[Just a quick reminder to anyone out there that may not know.. Enabling the Visual Editor in your User Profile settings gets you access to both Visual and HTML editors in the Write/Edit Post screen. Just click on either tab above the toolbar to toggle between modes. So you can write your posts in HTML [...]]]></description>
			<content:encoded><![CDATA[<p>Just a quick reminder to anyone out there that may not know.. <strong>Enabling the Visual Editor</strong> in your User Profile settings gets you access to both Visual and HTML editors in the Write/Edit Post screen. Just click on either tab above the toolbar to toggle between modes. So you can write your posts in HTML and then jump into the Visual Editor to take advantage of the <strong>new Linking tool</strong>, which makes adding links incredibly easy.</p>
<p><span id="more-3867"></span></p>
<p><img src="http://digwp.com/wp-content/blog-images/visual-editor-06.gif" alt="[ WP 3 Linking Tool ]" /></p>
<p>In previous versions of WordPress, if you enabled the Visual Editor via your User Profile page, that&#8217;s pretty much what you were forced to use. There was no way to leave it enabled and then just choose your preference locally from the Write/Edit post screen, so every time you updated your post, the editor would switch back to visual mode &ndash; even if you repeatedly click the HTML editing-mode button. Older versions of WordPress were like this for quite awhile, and during that time many WP peeps just decided to disable the Visual Editor to avoid the headache and constant switching.</p>
<p><img src="http://digwp.com/wp-content/blog-images/visual-editor-05.gif" alt="[ WP 2.3.3 - User Profile Page ]" /></p>
<p>Above is a screenshot of the User Profile page of version 2.3.3. At some point, it switched from &#8220;disabled&#8221; to &#8220;enabled&#8221;, as shown below for WordPress version 3.1.2:</p>
<p><img src="http://digwp.com/wp-content/blog-images/visual-editor-07.gif" alt="[ WP 3.1.2 - User Profile Page ]" /></p>
<p>Fast-forward to WordPress 3, and welcome the new streamlined <strong>Linking Tool</strong> that <em>only works in visual-editing mode</em>. It&#8217;s an awesome tool that makes internal linking almost fun, but unfortunately it is <strong>not available with the HTML editor</strong>. So all of those seasoned WP users who&#8217;ve been conditioned to disable the Visual Editor during setup are now completely missing out on the awesomeness of the new Link Tool.</p>
<p><img src="http://digwp.com/wp-content/blog-images/visual-editor-01.gif" alt="" /></p>
<p>I don&#8217;t know when it happened (which version), but somewhere along the way, WordPress started <em>remembering your editing preferences</em> right there in the Write/Edit post screen, so it&#8217;s no longer necessary to &#8220;Disable the Visual Editor&#8221; next time you&#8217;re setting up a site. Sure you can still disable it if you want to, but why? Leaving it enabled <em>gives you the option</em> to choose which editor to use while actually writing your post. This gives you access to WordPress&#8217; new Link Tool without sacrificing your ability to compose in HTML mode.</p>
<p><img src="http://digwp.com/wp-content/blog-images/visual-editor-02.gif" alt="" /></p>
<p><img src="http://digwp.com/wp-content/blog-images/visual-editor-03.gif" alt="" /></p>
<p><img src="http://digwp.com/wp-content/blog-images/visual-editor-04.gif" alt="" /></p>
<p>Then again, I may be totally wrong and everyone already knows about this. I hope that&#8217;s the case, because the new Link tool is super useful and worth a quick jump into the Visual Editor.</p>
<hr />
<p><small>© 2011 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2011/05/visual-editor-on/">Permalink</a> | <a href="http://digwp.com/2011/05/visual-editor-on/#comments">16 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2011/05/visual-editor-on/&title=Leave the Visual Editor ON">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/admin/" rel="tag">Admin</a>, <a href="http://digwp.com/tag/editing/" rel="tag">editing</a>, <a href="http://digwp.com/tag/editor/" rel="tag">editor</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2011/05/visual-editor-on/feed/</wfw:commentRss>
		<slash:comments>16</slash:comments>
		</item>
		<item>
		<title>Poll: Best Caching Plugin for WordPress?</title>
		<link>http://digwp.com/2011/05/best-caching-plugin-wordpress/</link>
		<comments>http://digwp.com/2011/05/best-caching-plugin-wordpress/#comments</comments>
		<pubDate>Mon, 16 May 2011 21:50:34 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[polls]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=1817</guid>
		<description><![CDATA[New Poll! We&#8217;ve got several polls running in the sidebar at DigWP.com, and the latest asks which caching plugin is best. Sure it&#8217;s all anecdotal and subjective, but user feedback is a fun way to see trends and get an idea of the top plugins. Amazingly enough, there currently are over 1,000 plugins tagged as [...]]]></description>
			<content:encoded><![CDATA[<p>New Poll! We&#8217;ve got several <em>polls running in the sidebar</em> at <a href="http://digwp.com/">DigWP.com</a>, and the latest asks <strong>which caching plugin is best</strong>. Sure it&#8217;s all anecdotal and subjective, but user feedback is a fun way to see trends and get an idea of the top plugins.</p>
<p><span id="more-1817"></span></p>
<p>Amazingly enough, there currently are <em>over 1,000 plugins</em> tagged as <a href="http://wordpress.org/extend/plugins/search.php?q=cache" title="Plugins tagged as 'cache' at WordPress.org">cache</a> at the WordPress Plugin Directory. That&#8217;s a <em>mind-boggling</em> number, so for this poll we&rsquo;re focusing only on caching plugins that improve <em>overall site performance</em> (as opposed to plugins specifically for caching images, feeds, stylesheets, and everything else). If you have a favorite that isn&rsquo;t on the list, leave a comment and we&rsquo;ll mention it when we post the results.</p>
Note: There is a poll embedded within this post, please visit the site to participate in this post's poll.
<p>Check the sidebar for more WordPress polls! :)</p>
<hr />
<p><small>© 2011 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2011/05/best-caching-plugin-wordpress/">Permalink</a> | <a href="http://digwp.com/2011/05/best-caching-plugin-wordpress/#comments">43 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2011/05/best-caching-plugin-wordpress/&title=Poll: Best Caching Plugin for WordPress?">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/polls/" rel="tag">polls</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2011/05/best-caching-plugin-wordpress/feed/</wfw:commentRss>
		<slash:comments>43</slash:comments>
		</item>
		<item>
		<title>Admin Bar Tricks</title>
		<link>http://digwp.com/2011/04/admin-bar-tricks/</link>
		<comments>http://digwp.com/2011/04/admin-bar-tricks/#comments</comments>
		<pubDate>Mon, 25 Apr 2011 16:20:23 +0000</pubDate>
		<dc:creator>Jeff Starr</dc:creator>
				<category><![CDATA[Admin]]></category>
		<category><![CDATA[admin-bar]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tricks]]></category>

		<guid isPermaLink="false">http://digwp.com/?p=4020</guid>
		<description><![CDATA[According to our latest poll, so far the votes are pretty much split on whether people love, hate, or don&#8217;t care about WordPress&#8217; new Admin Bar. Over time, it looks like &#8220;Hate it&#8221; has started to pull ahead, but it doesn&#8217;t matter because the Admin Bar is here to stay, regardless of opinion. Already there [...]]]></description>
			<content:encoded><![CDATA[<p>According to our <a href="http://digwp.com/2011/04/poll-love-hate-admin-bar/" title="Poll: Love or Hate the WordPress Admin Bar">latest poll</a>, so far the votes are pretty much split on whether people <em>love</em>, <em>hate</em>, or <em>don&#8217;t care</em> about WordPress&#8217; new Admin Bar. Over time, it looks like &#8220;Hate it&#8221; has started to pull ahead, but it doesn&#8217;t matter because <strong>the Admin Bar is here to stay</strong>, regardless of opinion. Already there are many awesome ways to make it do virtually <em>whatever you want</em>. In this <abbr title="Digging into WordPress">DigWP</abbr> post, we round up a ton of tips, tricks, and plugins for ultimately mastering the WordPress Admin Bar.</p>
<p><span id="more-4020"></span></p>
<p>Here is our menu of <strong>Admin Bar Tricks</strong> for WordPress 3.1 and better:</p>
<ul>
<li><a href="#disable-for-users">Disable the Admin Bar for individual users</a></li>
<li><a href="#disable-for-theme">Disable the Admin Bar for all users of the current theme</a></li>
<li><a href="#disable-for-non-admins">Disable the Admin Bar for non-Admins only</a></li>
<li><a href="#always-show">Always show the Admin Bar</a></li>
<li><a href="#move-to-bottom">Move the Admin Bar to the bottom</a></li>
<li><a href="#add-remove-links">Add or Remove links from the Admin Bar</a></li>
<li><a href="#clean-profile">Clean up User Profile Page</a></li>
<li><a href="#admin-bar-plugins">Disable and Customize the Admin Bar with Plugins</a></li>
<li><a href="#admin-bar-resources">Even More Admin Bar Resources</a></li>
</ul>
<h3 id="disable-for-users">Disable the Admin Bar for individual users</h3>
<p>By default, each registered user has the option of showing the Admin on the frontend and/or back-end of the site. Thus, to change your preferences, just visit <strong>Users</strong> &gt; <strong>Your Profile</strong> and choose your options as seen here:</p>
<p><img src="http://digwp.com/wp-content/blog-images/admin-bar-settings.gif" alt="[ Screenshot: Admin Bar Settings ]" /></p>
<p>Unfortunately, this gets kind of tedious when customizing profiles for many users. Fortunately, we&#8217;re just getting started, so read ahead to see more efficient ways of disabling and modifying the WordPress Admin Bar.</p>
<h3 id="disable-for-theme">Disable the Admin Bar for all users of the current theme</h3>
<p>To cleanly disable the Admin Bar for all users of your theme (and thus your site), add this snippet to your theme’s <code>functions.php</code> file:</p>
<pre><code>// disable the admin bar
show_admin_bar(false);</code></pre>
<p>Alternately, you may use this method, which filters the <code>show_admin_bar</code> function:</p>
<pre><code>// disable the admin bar
add_filter('show_admin_bar', '__return_false');</code></pre>
<p>Another option is to hide the Admin Bar using <abbr title="Cascading Style Sheets">CSS</abbr>. To do so, paste this into your<br />
theme’s <code>style.css</code> (or other stylesheet):</p>
<pre><code>/* hide the admin bar */
#wpadminbar { display:none; }</code></pre>
<h3 id="disable-for-non-admins">Disable the Admin Bar for non-Admins only</h3>
<p>Expanding on the previous example, here are two snippets that disable the Admin Bar for non-Admins and Editors. Place either of the following in <code>functions.php</code>:</p>
<pre><code>// show admin bar only for admins
if (!current_user_can('manage_options')) {
	add_filter('show_admin_bar', '__return_false');
}
// show admin bar only for admins and editors
if (!current_user_can('edit_posts')) {
	add_filter('show_admin_bar', '__return_false');
}</code></pre>
<p>As you might guess, any setting may be used for <code>current_user_can()</code>, so it’s easy to show/hide the Admin Bar for any particular group of users.</p>
<h3 id="clean-profile">Clean up User Profile Page</h3>
<p>After disabling the Admin Bar, you may want to hide its display settings in each user’s Profile Page. The easiest way to do this is with a simple function:</p>
<pre><code>function hideAdminBar() { ?&gt;
&lt;style type="text/css"&gt;.show-admin-bar { display: none; }&lt;/style&gt;
&lt;?php }
add_action('admin_print_scripts-profile.php', 'hideAdminBar');</code></pre>
<p>Just place that in your theme&#8217;s <code>functions.php</code> and you&#8217;re good to go. No more Admin Bar Settings displayed in the Admin area.</p>
<h3 id="always-show">Always show the Admin Bar</h3>
<p><a href="http://blog.ftwr.co.uk/archives/2011/01/05/always-show-admin-bar/" title="Always show admin bar">Follow the white rabbit</a> shows us how to show the Admin Bar even when logged out. As a bonus, a handy &#8220;Log in&#8221; button is added to the bar for easy maneuvering. Just add the following snippet to your theme&#8217;s <code>functions.php</code> file:</p>
<pre><code>// always show admin bar
function pjw_login_adminbar( $wp_admin_bar) {
	if ( !is_user_logged_in() )
	$wp_admin_bar-&gt;add_menu( array( 'title' =&gt; __( 'Log In' ), 'href' =&gt; wp_login_url() ) );
}
add_action( 'admin_bar_menu', 'pjw_login_adminbar' );
add_filter( 'show_admin_bar', '__return_true' , 1000 );</code></pre>
<p>You can see it in action at <a href="http://blog.ftwr.co.uk/archives/2011/01/05/always-show-admin-bar/" title="Always show admin bar">follow the white rabbit</a>.</p>
<h3 id="move-to-bottom">Move the Admin Bar to the bottom</h3>
<p>Want to display the Admin Bar at the bottom of the page instead of the top? <a href="http://wpengineer.com/2190/move-wordpress-admin-bar-to-the-bottom/" title="Move WordPress Admin Bar to the Bottom">WPengineer</a> shows us how with this bit of <abbr title="Cascading Style Sheets">CSS</abbr> via the <code>functions.php</code> file:</p>
<pre><code>// move admin bar to bottom
function fb_move_admin_bar() { ?&gt;
	&lt;style type="text/css"&gt;
		body {
			margin-top: -28px;
			padding-bottom: 28px;
		}
		body.admin-bar #wphead {
			padding-top: 0;
		}
		body.admin-bar #footer {
			padding-bottom: 28px;
		}
		#wpadminbar {
			top: auto !important;
			bottom: 0;
		}
		#wpadminbar .quicklinks .menupop ul {
			bottom: 28px;
		}
	&lt;/style&gt;
&lt;?php }
// on backend area
add_action( 'admin_head', 'fb_move_admin_bar' );
// on frontend area
add_action( 'wp_head', 'fb_move_admin_bar' );</code></pre>
<p>This code adds the required CSS to both the front-end (public pages) and back-end (admin pages). To disable for one or the other, just comment-out or remove the corresponding <code>add_action()</code> line near the end of the code. You could also just copy/paste the CSS into your theme&#8217;s <code>style.css</code> file if you only need to move it on the front-end of your site. An even easier way is provided by Coen Jacobs&#8217; <a href="http://cnjcbs.com/wordpress-plugins/stick-admin-bar-to-bottom/">Stick Admin Bar To Bottom</a> plugin that makes it happen automagically.</p>
<h3 id="add-remove-links">Add or Remove links from the Admin Bar</h3>
<p><a href="http://wpmu.org/how-to-add-or-remove-links-from-the-wordpress-3-1-admin-bar/" title="How to Add or Remove Links From the WordPress 3.1 Admin Bar">WPMU.org</a> shows us how to add/remove links from the Admin Bar. This is especially useful for MultiSite networks, where all of the extra links may not be necessary. The following code may be used to <strong>remove</strong> links and/or menus (via <code>functions.php</code>:</p>
<pre><code>// remove links/menus from the admin bar
function mytheme_admin_bar_render() {
	global $wp_admin_bar;
	$wp_admin_bar-&gt;remove_menu('comments');
}
add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_render' );</code></pre>
<p>For this example, we use <code>remove_menu('comments')</code> to remove the comments dropdown list. To remove a different link/menu, check <code>/wp-includes/admin-bar.php</code> for the corresponding ID. Here&#8217;s a list of some of them to get you started:</p>
<ul>
<li><code>my-account</code> &ndash; link to your account (avatars disabled)</li>
<li><code>my-account-with-avatar</code> &ndash; link to your account (avatars enabled)</li>
<li><code>my-blogs</code> &ndash; the &#8220;My Sites&#8221; menu if the user has more than one site</li>
<li><code>get-shortlink</code> &ndash; provides a Shortlink to that page</li>
<li><code>edit</code> &ndash; link to the Edit/Write-Post page</li>
<li><code>new-content</code> &ndash; link to the &#8220;Add New&#8221; dropdown list</li>
<li><code>comments</code> &ndash; link to  the &#8220;Comments&#8221; dropdown</li>
<li><code>appearance</code> &ndash; link to the &#8220;Appearance&#8221; dropdown</li>
<li><code>updates</code> &ndash; the &#8220;Updates&#8221; dropdown</li>
</ul>
<p>To <strong>add</strong> links/menus to the Admin Bar, add the following code to your <code>functions.php</code> file:</p>
<pre><code>// add links/menus to the admin bar
function mytheme_admin_bar_render() {
	global $wp_admin_bar;
	$wp_admin_bar-&gt;add_menu( array(
		'parent' =&gt; 'new-content', // use 'false' for a root menu, or pass the ID of the parent menu
		'id' =&gt; 'new_media', // link ID, defaults to a sanitized title value
		'title' =&gt; __('Media'), // link title
		'href' =&gt; admin_url( 'media-new.php') // name of file
		'meta' =&gt; false // array of any of the following options: array( 'html' =&gt; '', 'class' =&gt; '', 'onclick' =&gt; '', target =&gt; '', title =&gt; '' );
	));
}
add_action( 'wp_before_admin_bar_render', 'mytheme_admin_bar_render' );</code></pre>
<p>You&#8217;ll want to adjust the parameters to fit your needs, and don&#8217;t forget to see the <a href="http://codex.wordpress.org/Function_Reference/add_menu" title="WP Codex: Function Reference/add menu">Codex</a> for additional information. For even more insight into this technique, see WPengineer&#8217;s post on <a href="http://wpengineer.com/2113/add-menus-to-the-admin-bar-of-wordpress/">adding menus to the Admin Bar</a>.</p>
<h3 id="admin-bar-plugins">Disable and Customize the Admin Bar with Plugins</h3>
<p>Almost immediately after the Admin Bar was added to the WordPress core, plugins started popping up to disable it, move it, minimize it, and more. Here’s a quick list of plugins and links for ultimate control over the Admin Bar.</p>
<ul>
<li><a href="http://digwp.com/u/542">Admin Bar Disabler</a></li>
<li><a href="http://digwp.com/u/543">Admin Bar Minimiser</a></li>
<li><a href="http://digwp.com/u/544">Admin Bar Removal</a></li>
<li><a href="http://digwp.com/u/545">Global Hide/Remove Admin Bar Plugin</a></li>
<li><a href="http://digwp.com/u/546">Hide Admin Bar Search</a></li>
<li><a href="http://digwp.com/u/547">Stick Admin Bar To Bottom</a></li>
<li><a href="http://digwp.com/u/548">WP Custom Admin Bar</a></li>
</ul>
<p>If you know of others, mention them in the comments and we&#8217;ll add them to the list!</p>
<h3 id="admin-bar-resources">More Admin-Bar Resources</h3>
<p>Here are some excellent resources for more information on the WordPress Admin Bar.</p>
<ul>
<li><a href="http://codex.wordpress.org/Administration_Menus">WP Codex: Administration Menus</a></li>
<li><a href="http://codex.wordpress.org/Function_Reference/add_menu" title="WP Codex: Function Reference/add menu">WP Codex: Function Reference/add menu</a></li>
<li><a href="http://yoast.com/disable-wp-admin-bar/">How to disable the WordPress Admin Bar</a></li>
<li><a href="http://www.wpbeginner.com/wp-tutorials/what-everybody-ought-to-know-about-the-wordpress-admin-bar/">What Everybody Ought to Know about the WordPress Admin Bar</a></li>
</ul>
<hr />
<p><small>© 2011 <a href="http://digwp.com">Digging into WordPress</a> | <a href="http://digwp.com/2011/04/admin-bar-tricks/">Permalink</a> | <a href="http://digwp.com/2011/04/admin-bar-tricks/#comments">20 comments</a> | Add to <a href="http://del.icio.us/post?url=http://digwp.com/2011/04/admin-bar-tricks/&title=Admin Bar Tricks">del.icio.us</a> | Post tags: <a href="http://digwp.com/tag/admin/" rel="tag">Admin</a>, <a href="http://digwp.com/tag/admin-bar/" rel="tag">admin-bar</a>, <a href="http://digwp.com/tag/tips/" rel="tag">tips</a>, <a href="http://digwp.com/tag/tricks/" rel="tag">tricks</a><br/></small></p>]]></content:encoded>
			<wfw:commentRss>http://digwp.com/2011/04/admin-bar-tricks/feed/</wfw:commentRss>
		<slash:comments>20</slash:comments>
		</item>
	</channel>
</rss>

