在标题后立即添加按钮/链接到自定义帖子类型编辑屏幕
Posted
技术标签:
【中文标题】在标题后立即添加按钮/链接到自定义帖子类型编辑屏幕【英文标题】:Add Button/Link Immediately After Title to Custom Post Type Edit Screen 【发布时间】:2014-04-11 06:15:56 【问题描述】:我正在为客户端自定义 WordPress 安装的后端,并且添加了几种自定义帖子类型。它们通过一页内的自定义循环显示在前端,因此用户不应访问单个自定义帖子。
为了帮助确保它们不会被意外访问,我删除了 永久链接 选择框,其中包括 查看帖子 按钮。我想在页面顶部的添加新员工旁边添加一个查看帖子链接。 (如果不可能,我会选择拦截并替换 Add New Employee 按钮)
我正在寻找一个 WordPress 挂钩来放置按钮,但我还没有找到任何东西。我找到的最接近的帖子是 WP Core 博客上的帖子(引用 edit_form_advanced
、edit_form_after_editor
、edit_form_after_title
),但列出的没有一个适用于此。
我想添加的按钮是这个 php:
<a class="add-new-h2" href="<?php echo $displaypage.get_the_title($post_ID); ?>">View <?php echo $posttype; ?></a>
$displaypage
类似于'/about-us/our-people/#'
实际上,我需要帮助的只是找到一种方法来连接它。一旦我知道如何添加它,我就知道要添加什么。
编辑:
我知道我可以使用 javascript 插入按钮,而完全不用钩子。不过,如果可能的话,我想避免这种情况,对于禁用 JS 的人以及连接速度非常慢的人的边缘情况(jQuery 在页面完全加载之前不会激活,所以在那种情况下它会在后期闪烁)。
【问题讨论】:
【参考方案1】:我只有found one hook 没有在 WP Core 的帖子中被引用,并且似乎是唯一一个最接近所需位置的人:
问题在于Add New (post type)
被包裹在<h2>
标记(line 365 of the same file)中,并且钩子发生在它之后。
add_action( 'edit_form_top', 'top_form_edit' );
function top_form_edit( $post )
if( 'portfolio' == $post->post_type )
echo "<a href='#' id='my-custom-header-link'>$post->post_type</a>";
剩下的唯一选择是用 jQuery 操作 DOM:
add_action( 'admin_head-post.php', 'manipulate_dom' );
add_action( 'admin_head-post-new.php', 'manipulate_dom' );
function manipulate_dom()
// Not our post type, exit earlier
// Adjust post type
if( 'portfolio' != get_current_screen()->post_type )
return;
?>
<script type="text/javascript">
jQuery(document).ready( function($)
// your thing
// $('#my-custom-header-link').moveAround();
);
</script>
<?php
【讨论】:
我可以使用 jQuery 进行操作而无需任何钩子,只需插入我需要的按钮。如果可能的话,我想在不使用 JS 的情况下插入它。 你试过我贴的钩子了吗?你检查过核心文件吗?那是最近的钩子...... JS 用于像素完美的位置。不知道能不能用 CSS 完成。 我没有,因为如果我要使用jQuery,我可以直接插入内容而无需使用任何钩子。我已经完成了 edit-form-advanced 并且找不到您错过的任何内容,这令人沮丧,但并非完全出乎意料。不过,这将是一个挂机的好地方,所以我想唯一要做的就是开一张增强票。无论如何,谢谢!【参考方案2】:遇到同样的问题,我使用的解决方案如下:
我迷上了“admin_notices”
重写了我自己的标题
使用 CSS 隐藏现有标题,如下所示:
function rewrite_cpt_header()
$screen = get_current_screen();
if( $screen->id !='edit-location' )
return;
else
?>
<div class="wrap">
<h1 class="wp-heading-inline show" style="display:inline-block;">Locations</h1>
<a href="<?php echo admin_url('post-new.php?post_type=location'); ?>" class="page-title-action show">Add New Location</a>
<a href="<?php echo admin_url('edit-tags.php?taxonomy=location_types&post_type=location'); ?>" class="page-title-action show">Edit Location Types</a>
</div>
<style scoped>
.wp-heading-inline:not(.show),
.page-title-action:not(.show) display:none !important;
</style>
<?php
add_action('admin_notices','rewrite_cpt_header');
【讨论】:
这应该是公认的答案,你震撼! (Y)以上是关于在标题后立即添加按钮/链接到自定义帖子类型编辑屏幕的主要内容,如果未能解决你的问题,请参考以下文章
使用 Wordpress,我如何创建一个链接到自定义帖子类型存档的新菜单项?