Základní php funkce pro vývojáře WordPressu

Když není do čeho píchnout, dělám malé weby mám chvilku, dělám webíky pro známé. Dělám svoje vlastní šablony a během tvorby jsem se setkal s těmito specialitami:

Jak přidat do menu (main-menu) class nav-link?

//add class="nav-link" to href in li in menu
add_filter( 'nav_menu_link_attributes', 'add_specific_menu_location_atts', 10, 3 );
function add_specific_menu_location_atts( $atts, $item, $args ) {
	// check if the item is in the primary menu
	if( $args->theme_location == 'main-menu' ) {
		// add the desired attributes:
		$atts['class'] = 'nav-link';
	}
	return $atts;
}

V administraci pro pro uživatele id 2 skryj položky z menu:

function remove_menus(){
	if(get_current_user_id() == 2) {
		//hide for user id 2
		remove_menu_page('index.php');                  //Dashboard
		remove_menu_page('jetpack');                    //Jetpack*
		remove_menu_page('edit.php');                   //Posts
		//remove_menu_page('upload.php');                 //Media
		//remove_menu_page('edit.php?post_type=page');    //Pages
		remove_menu_page('edit-comments.php');          //Comments
		remove_menu_page('themes.php');                 //Appearance
		remove_menu_page('plugins.php');                //Plugins
		remove_menu_page('users.php');                  //Users
		remove_menu_page('tools.php');                  //Tools
		remove_menu_page('options-general.php');        //Settings
		remove_menu_page('WP-Lightbox-2');        		//WP Lightbox 2
	}
}
add_action( 'admin_menu', 'remove_menus' );

Jak v administraci použít vlastní css styl pro editor?

add_action( 'init', 'load_custom_wp_admin_editor_styles' );
function load_custom_wp_admin_editor_styles() {
	add_editor_style( get_template_directory_uri() . '/css/admin-style.css' );
}

Vytvářená galerie bude mít defaultně předvolené 4 sloupce fotek:

/**
 * Default 4 colums in gallery
 * @param $settings
 * @return mixed
 */
function theme_gallery_defaults( $settings ) {
	$settings['galleryDefaults']['columns'] = 4;
	return $settings;
}
add_filter( 'media_view_settings', 'theme_gallery_defaults' );

Vytvářená galerie bude mít automaticky předvolen URL odkazu na mediální soubor:

/**
 * Gallery default URL odkazu: medialni soubor
 */
add_filter( 'shortcode_atts_gallery',
	function( $out ){
		$out['link'] = 'file';
		return $out;
	}
);

U nahrávání fotek do mediálních souborů odeber titulek fotky a popis (některé foťáky tam ukládají nesmysly):

/**
 * Automatically set the title as caption to empty
 *
 * @see https://wordpress.stackexchange.com/a/188708/26350
 */
add_filter( 'wp_insert_attachment_data', function( $data, $postarr )
{
	// Let's target only the uploading process and not the updating of attachments:
	if( isset( $postarr['ID'] ) && 0 == $postarr['ID'] ) {
		$data['post_excerpt'] = "";
		$data['post_title'] = "";
	}

	return $data;
}, 10, 2 );

Automatická aktualizace:

//auto actualise
//plusing
add_filter( 'auto_update_plugin', '__return_true' );
//themes
add_filter( 'auto_update_theme', '__return_true' );
//wp
define( 'WP_AUTO_UPDATE_CORE', true );