将32x32图标添加到自定义帖子类型索引页

时间:2012-11-30 作者:chowwy

我已经设置了一个“相册”自定义帖子类型,并想在索引页上红色圆圈所在的位置添加一个图标(参见下图;来自wptheming.com)。

这是我用来替换图标的函数。CSS是我用firebug检查图标元素时发现的:

add_action(\'admin_head\', \'album_foo\');
function album_foo() {
        global $post_type;
    ?>
    <style>
    <?php if ($post_type == \'album\') : ?>

     #icon-album.icon32.icon32-posts-album {
      background:url(\'<?php get_template_directory_uri(); ?>/images/album32x32.png\') no-repeat;
    } 
    <?php endif; ?>
        </style>
        <?php
}
我还在函数中尝试了此CSS:

#icon-edit.icon32-posts-album {
        background:url(\'<?php get_template_directory_uri(); ?>/images/album32x32.png\') no-repeat;
}
我不知道我的CSS缺少了什么,但我的图标没有显示出来。

enter image description here

3 个回复
最合适的回答,由SO网友:chowwy 整理而成

我想出来了!

WordPress在自定义贴子索引/编辑/添加页面上查找32x32图标时,首先查找:

/wp-admin
因为那是WordPress 32px图标所在的位置。但是CSS引用通常与样式表的位置相关。因此,在将图标的位置添加到CSS时,首先,您必须使用/wp admin作为参考点,因此它将不同于大多数其他CSS参考。然后使用这些相对URL访问图标所在的目录。

自定义post类型32px图标的CSS应如下所示:

#icon-[your-menu-slug].icon32.icon32-posts-[custom-post-type] {
  background: url(\'[relative URL, but get out of wp-admin first!]/icon-location\') no-repeat;
}
希望这对其他人有帮助!

SO网友:s_ha_dum

除非您的服务器已专门配置为这样做,否则PHP将无法在中工作。css文件。看起来这就是你想要做的。Relative URLs 与WordPress的大多数部分相比,在样式表中可以很好地工作。尝试使用相对URL作为图标的路径。

编辑:

事实并非如此#icon-album. 是的#icon-edit. 那个id 不会随帖子类型而改变,至少不会随我尝试的帖子类型而改变。这个classes更改。那个id 似乎保持不变。

add_action(\'admin_head\', \'album_foo\');
function album_foo() {
    global $post_type;$_GET; ?>
    <?php if (( isset($_GET[\'post_type\'] && $_GET[\'post_type\'] == \'album\') || ($post_type == \'album\')) : ?>
      <style type="text/css">
    #icon-edit.icon32.icon32-posts-post {
      background:url(\'<?php get_template_directory_uri(); ?>/images/album32x32.png\') no-repeat;
    } 
      </style>
    <?php endif;
}
我移动了<style 标记到条件中,因为不需要打印空标记,并且在调试时WARNINGs打印灌输<style> 可能会破坏它的标签。我还添加了一个检查$_GET[\'post_type\'] 在尝试使用之前已设置。

SO网友:Stephen Harris

如果使用firebug时看到

#icon-album.icon32.icon32-posts-album {
  background:url(\'<?php get_template_directory_uri(); ?>/images/album32x32.png\') no-repeat;
}
那你就是在传递字符串\'<?php get_template_directory_uri(); ?>/images/album32x32.png\' 到css文件中的background属性,并且它们不执行php代码。

如果图像和CSS位于主题文件夹中(或者至少CSS文件位于图像上方的某个目录中),则可以使用相对URL。

对于那些正在开发用于发布的插件并且不想将一些CSS文件排成一行的人。。。

// Adds icon to the page head
add_action(\'admin_head\', \'wpse74477_plugin_header_image\');
function wpse74477_plugin_header_image() {
    $post_type = get_current_screen()->post_type;

    if ( \'album\' != $post_type )
        return;
    ?>
         <style type="text/css">
            .icon32.icon32-posts-album {
               background: url(<?php echo get_template_directory_uri(); ?>/images/album32x32.png) !important;
            }
         </style>
     <?php
}

结束

相关推荐

Can't delete unwanted favicon

我有一个favicon,它是wordpress主题停用后的残余。我在主题文件夹中找不到favicon文件,也找不到wordpress或服务器根目录。我已将自己的引用添加到一个新的favicon,但仍显示旧的favicon。<;link rel=“icon”type=“image/png”href=”http://www.steve.doig.com.au/wordpress/wp-content/themes/grid-focus-public-10/images/favicon.ico“>我的