Pregunta:
Cualquiera puede reconocer el backend actual de WordPress, pero yo no quiero eso. Quiero cambiarlo usando mi propio diseño y quiero tener una experiencia de navegación perfecta para mis usuarios. ¿Cómo puedo cambiar la apariencia del tablero? Busqué en Google muchas publicaciones y preguntas, y parece que solo puedes cambiar el CSS de la mayoría de las cosas y algunas personas estaban usando ganchos para agregar su propio código y otras cosas.
Respuesta:
Utilizo un archivo de inclusión personalizado que creé para modificar el tablero. Algunos de los ganchos y filtros están comentados de forma predeterminada, pero la mayoría de las cosas están aquí para eliminar menús, cambiar logotipos de wp, eliminar metacajas, eliminar widgets del tablero, etc.
<?php
/*
File: cleanup-dashboard.php
Description: Clean up and customize the dashboard
Author: Chris Olbekson
Author URI: http://c3mdigital.com
*/
//Dashboard Action Hooks
add_action( 'admin_init', 'c3m_admin_style' );
add_action( 'admin_init', 'c3m_remove_dashboard_meta' );
add_action( 'admin_init', 'c3m_remove_post_meta' );
add_action( 'admin_menu', 'c3m_remove_admin_menus' );
add_action( 'admin_menu', 'c3m_remove_admin_submenus' );
add_filter( 'admin_user_info_links', 'c3m_user_greeting' );
add_action( 'admin_head', 'c3m_custom_logo' );
add_action( 'login_head', 'c3m_custom_login_css' );
add_action( 'login_head', 'c3m_custom_login_logo' );
add_filter( 'admin_footer_text', 'c3m_remove_footer_admin' );
add_action( 'init', 'c3m_change_post_object_label' );
add_action( 'admin_menu', 'c3m_change_post_menu_label' );
add_filter( 'admin_body_class', 'c3m_admin_body_class' );
//Dashboard CSS
function c3m_admin_style() {
wp_enqueue_style( 'c3m_admin_css', get_bloginfo( 'stylesheet_directory' ) . '/_/admin/c3m-admin.css', false, '1.0', 'all');
}
//Removes the dashboard widgets
function c3m_remove_dashboard_meta() {
remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');
remove_meta_box('dashboard_plugins', 'dashboard', 'normal');
remove_meta_box('dashboard_primary', 'dashboard', 'normal');
remove_meta_box('dashboard_secondary', 'dashboard', 'normal');
remove_meta_box('dashboard_incoming_links', 'dashboard', 'normal');
remove_meta_box('dashboard_quick_press', 'dashboard', 'side');
// remove_meta_box('dashboard_recent_drafts', 'dashboard', 'side');
remove_meta_box( 'dashboard_recent_comments', 'dashboard', 'normal' );
}
function c3m_remove_post_meta() {
// remove_meta_box( 'commentstatusdiv', 'page', 'normal' );
// remove_meta_box( 'commentstatusdiv', 'post', 'normal' );
// remove_meta_box( 'commentsdiv', 'page', 'normal' );
// remove_meta_box( 'commentsdiv', 'post', 'normal' );
// remove_meta_box( 'authordiv', 'page', 'normal' );
// remove_meta_box( 'authordiv', 'post', 'normal' );
// remove_meta_box( 'trackbacksdiv', 'post', 'normal' );
// remove_meta_box( 'trackbacksdiv', 'page', 'normal' );
// remove_meta_box( 'postcustom', 'post', 'normal' );
// remove_meta_box( 'postcustom', 'page', 'normal' );
// remove_meta_box( 'slugdiv', 'post', 'normal' );
// remove_meta_box( 'slugdiv', 'page', 'normal' );
//remove_meta_box( 'excerptdiv', 'post', 'normal' );
// remove_meta_box( 'page_choicediv', 'post', 'normal' );
// remove_meta_box( 'page_choicediv', 'sponsor_ad', 'normal' );
}
//Remove top level admin menus
//Remove top level admin menus
function c3m_remove_admin_menus() {
remove_menu_page( 'edit-comments.php' );
remove_menu_page( 'link-manager.php' );
remove_menu_page( 'tools.php' );
// remove_menu_page( 'plugins.php' );
// remove_menu_page( 'users.php' );
// remove_menu_page( 'options-general.php' );
}
//Remove sub level admin menus
function c3m_remove_admin_submenus() {
remove_submenu_page( 'themes.php', 'theme-editor.php' );
remove_submenu_page( 'themes.php', 'themes.php' );
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=post_tag' );
remove_submenu_page( 'edit.php', 'edit-tags.php?taxonomy=category' );
// remove_submenu_page( 'themes.php', 'nav-menus.php' );
// remove_submenu_page( 'themes.php', 'widgets.php' );
// remove_submenu_page( 'plugins.php', 'plugin-editor.php' );
// remove_submenu_page( 'plugins.php', 'plugin-install.php' );
// remove_submenu_page( 'users.php', 'users.php' );
// remove_submenu_page( 'users.php', 'user-new.php' );
// remove_submenu_page( 'options-general.php', 'options-writing.php' );
// remove_submenu_page( 'options-general.php', 'options-discussion.php' );
// remove_submenu_page( 'options-general.php', 'options-reading.php' );
// remove_submenu_page( 'options-general.php', 'options-discussion.php' );
// remove_submenu_page( 'options-general.php', 'options-media.php' );
// remove_submenu_page( 'options-general.php', 'options-privacy.php' );
// remove_submenu_page( 'options-general.php', 'options-permalinks.php' );
}
//This Adds an extra body class to a custom post type editor screen to target with css
function c3m_admin_body_class( $classes ) {
global $wpdb, $post;
$post_type = get_post_type( $post->ID );
if ( is_admin() && ( $post_type == 'sponsor_ad' ) ) {
$classes .= 'post_type-' . $post_type;
}
return $classes;
}
//Replaces Howdy with Welcome pretty self explanitory
function c3m_user_greeting( $greet_msg ) {
$greet_msg = str_replace( 'Howdy,','Welcome', $greet_msg);
return $greet_msg;
}
//Admin Header Logo this replaces the WordPress logo with your own
function c3m_custom_logo() {
echo '
<style type="text/css">
#header-logo { background-image: url('.get_bloginfo('template_directory').'/images/logo_wnd_small.png) !important; width:98px; }
</style>
';
}
//Admin Footer Logo Same as above but for the footer
function c3m_remove_footer_admin() {
echo '<div id="wlcms-footer-container">';
echo '<a target="_blank" href="http://c3mdigital.com"><img style="width:80px;" src="'.get_bloginfo('template_directory').'/images/developer-logo.png" id="wlcms-footer-logo">Custom WordPress Development</a>';
echo '</div><p id="safari-fix"';
}
//Login Screen CSS Custon css to replace the WP logo on the login screen
function c3m_custom_login_css() {
echo '<link type="text/css" href="'.get_bloginfo('template_directory').'/_/admin/c3m-login.css" />';
}
//Login Screen Logo this incjects your logo css into the login css page
function c3m_custom_login_logo() {
echo '<style type="text/css">
h1 a { background-image:url('.get_bloginfo('template_directory').'/images/logo_wnd_new.png) !important; margin-bottom: 20px; height:100px; }
</style>
<script type="text/javascript">
function loginalt() {
var changeLink = document.getElementById(\'login\').innerHTML;
changeLink = changeLink.replace("http://wordpress.org/", "' . site_url() . '");
changeLink = changeLink.replace("Powered by WordPress", "' . get_bloginfo('name') . '");
document.getElementById(\'login\').innerHTML = changeLink;
}
window.onload=loginalt;
</script>
';
}
//This changes the name of Posts to something different
function c3m_change_post_menu_label() {
global $menu;
global $submenu;
$menu[5][0] = 'Post Boxes';
//$menu[10][0] = 'Files';
$submenu['edit.php'][5][0] = 'Post Boxes';
$submenu['edit.php'][10][0] = 'Add Post Box';
//$submenu['edit.php'][15][0] = 'Status';
echo '';
}
//Changes the label for the posts we changed above
function c3m_change_post_object_label() {
global $wp_post_types;
$labels = &$wp_post_types['post']->labels;
$labels->name = 'Post Boxes';
$labels->singular_name = 'Add New Post Box';
$labels->add_new = 'Add Post Box';
$labels->add_new_item = 'Add Post Box';
$labels->edit_item = 'Edit Post Box';
$labels->new_item = 'Post Box';
$labels->view_item = 'View Post Box';
$labels->search_items = 'Search Post Boxes';
$labels->not_found = 'No Post Boxes found';
$labels->not_found_in_trash = 'No Post Boxes found in Trash';
}
//Post Edit Columns Customizes the post edit columns by adding the featured image as a thumbnail and shows the excert
// Add to admin_init function
add_filter( 'manage_edit-post_columns', 'add_new_post_columns');
add_filter( 'manage_edit-post_columns', 'unset_the_defaults');
add_action( 'manage_posts_custom_column', 'testimonial_custom_column', 10, 2);
add_action( 'manage_posts_custom_column', 'testimonial_source_column', 10, 2);
function unset_the_defaults($defaults) {
unset($defaults['author']);
//unset($defaults['title']);
return $defaults;
}
function add_new_post_columns($dfaults) {
$dfaults['page_choice'] = 'Displayed On';
$dfaults['article_source'] = 'Source';
$dfaults['post_box_excerpt'] = 'Post Box Excerpt';
$dfaults['post_box_image'] = 'Post Box Image';
return $dfaults;
}
function testimonial_custom_column($column_name, $post_id){
$taxonomy = $column_name;
$post_type = get_post_type($post_id);
$terms = get_the_terms($post_id, $taxonomy);
if (!empty($terms) ) {
foreach ( $terms as $term )
$post_terms[] ="<a href='edit.php?post_type={$post_type}&{$taxonomy}={$term->slug}'> " .esc_html(sanitize_term_field('name', $term->name, $term->term_id, $taxonomy, 'edit')) . "</a>";
echo join('', $post_terms );
}
else echo '<i>No Display Page Set. </i>';
}
function testimonial_source_column($column_name, $post_id) {
global $post; global $prefix;
if ($column_name == 'article_source') {
echo get_post_meta($post_id, $prefix.'article-source', TRUE);
}
elseif ($column_name == 'post_box_image') {
if ( get_post_meta($post_id, $prefix.'post_box_image', TRUE) ) {
echo '<img src="' .get_post_meta($post_id, $prefix.'post_box_image', TRUE). '" style="max-width:40%; max-height:40%;" />';
}
else echo 'No Post Box Image Set';
}
elseif ($column_name == 'post_box_excerpt') echo substr($post->post_excerpt, 0, 150) . '...';
}