O WordPress 3.8 introduziu no núcleo o plugin MP6 que, entre outras coisas, usa uma fonte icônica chamada Dashicons para exibir fontes no painel.
Agora, é sabido que register_post_type possui um argumento 'menu_icon'
que permite especificar um ícone personalizado para a entrada do menu de administração do CPT.
Nos meus plugins / temas, costumo usar esse argumento com minhas imagens de ícones personalizadas que normalmente são escuras porque antes do menu de administração 3.8 havia um fundo claro. Com o fundo do menu escuro padrão no WP 3.8, meus ícones se tornam quase invisíveis.
Além disso, acho que usar as novas dashicons para o meu CPT será legal.
Após algumas pesquisas, sei que posso usar o CSS das dashicons, algo como
#menu-posts-mycpt div.wp-menu-image:before { content: "\f226"; }
No entanto, o uso do 'menu_icon'
argumento register_post_type
e do css anterior imprimirá os dois ícones no WP 3.8 e um ícone + um caractere estranho no WP 3.8-, e sem o 'menu_icon'
argumento use , nas versões anteriores o ícone padrão é usado.
Eu sei que posso condicionalmente adicionar 'menu_icon'
em register_post_type
para WP 3.8- versões e condicionalmente adicionar css anterior para WP 3.8+, mas:
- que envolve adicionar algum código (2 instruções condicionais) para cada CPT registrado, portanto, atualizar plugins / temas é um trabalho bastante difícil
- parece-me mais uma solução alternativa do que uma solução elegante
Então, as perguntas são:
É possível usar o dashicons css para WP 3.8+ e usar a configuração de imagem personalizada via 'menu_icon'
param para versões anteriores de uma maneira "mais simples" que não envolva adicionar 2 condicionais para cada CPT registrado?
E, se assim for, é possível fazer isso de alguma maneira automagica diretamente, register_post_type
sem nenhum código adicional?
fonte
menu_icon
não poderá usar o URL da imagem para versões anteriores ... mas quem se importa com o passado? :)Fácil: basta ler a parte relevante do
register_post_type()
phpDocBlock e usar o argumento certo paramenu_icon
: Ddashicon-groups
data:image/svg+xml;base64,
.'none'
para deixar emdiv.wp-menu-image
branco, para que um ícone possa ser adicionado via CSS.fonte
svg-painer.js
, a biblioteca js principal usada para lidar com a mudança de cor pode consumir muito tempo se o ícone for mais "complexo" do que o padrão dashicons. * A terceira opção (ícone vazio) é válida não apenas para o WP 3.8+, mas há muito tempo ... e usar css é algo que eu quero evitar (conforme a pergunta). Então, marque +1 para reunir todas as opções, mas acho que a resposta aceita já responde à minha pergunta. PS feliz em ver que o diamante perto do seu nome :)svg-painter.js
arquivo. Não sabia, pois ainda não tentei.Estou me respondendo porque hoje me perguntei as 2 perguntas que publiquei e passei algum tempo para encontrar uma resposta. Depois de encontrar uma solução, quero compartilhá-la, mas qualquer outra solução é muito apreciada e estou pronta para aceitar qualquer solução que tenha encontrado melhor que a minha. Edições e melhorias na minha solução são apreciadas e não incentivadas.
Editar
Após a resposta Rarst, editei o código. Agora, a função use classes padrão dashicons, mas também permite especificar um URL de imagem no estilo antigo no
menu_icon
argumento e uma nova classe dashicons nomenu_dashicon
argumento.Workflow
Primeiro, acho que pensei que
register_post_type
, dispara uma ação,registered_post_type
que passa para as funções de ligação dos argumentos transmitidosregister_post_type
, sem filtrá-las, para que seja possível criar argumentos personalizados para essas funções.Então, decidi passar o argumento
'menu_dashicon'
para passar um dashicon personalizado.Depois disso, pensei em criar uma classe que ouvisse esse argumento, salvando o ícone em uma variável de classe. A mesma classe pode ser responsável por
$menu
matriz no gancho adequado e:'menu_icon'
e'menu_dashicon'
parâmetroEu crio o código em um único arquivo, dessa forma ele pode ser facilmente incluído em qualquer tema / plugin ou até mesmo usado como plugin MU e, depois disso, é possível usar o
'menu_dashicon'
argumento novo em todos os temas e / ou plugins instalados.Também adicionei um cabeçalho mínimo de plug-in que permite usá-lo como um plug-in independente, mas provavelmente essa é a maneira menos útil de usar.
Como usar
Por dentro,
register_post_type
basta passar o'menu_dashicon'
argumento com o valor da classe dashicon ( sem o prefixo 'dashicons-'):Isso é tudo. Obtenha o nome da classe de ícone dos Dashicons em seu site .
Então aqui o código:
Também está disponível como Gist
Dois CPTs: "Ideias" e "Galeria" usando Dashicons. Observe a mudança automática de cores com diferentes esquemas de cores de administrador.
fonte
Simplesmente adicionei esta linha ao código que registra o tipo de postagem personalizada:
Aqui está o código completo
Não é necessário adicionar nenhum CSS.
fonte