问题描述

如何将 pre-defined 选项添加到”add new” 自定义字段下拉列表?

以下是自动添加和显示新自定义字段的两个示例:

  1. WordPress: Adding Default Custom Fields on New Posts

  2. Auto create custom field

这接近我想做的事情; 我的目标是将 pre-defined 选项添加到”add new” 自定义归档下拉列表中,但是在博主添加它们之前,它们不会显示为字段。

我想知道如何做,而不使用插件。

最佳解决方案

你不能用纯 PHP 来做,因为这些字段是从现有的字段中获取的,没有钩子。但是您可以使用 JavaScript,检查帖子类型是否支持自定义字段,并且字段不存在 – 并将其插入:

<?php # -*- coding: utf-8 -*-
/* Plugin Name: Extend custom fields */

add_action( 'admin_footer-post-new.php', 'wpse_98269_script' );
add_action( 'admin_footer-post.php', 'wpse_98269_script' );

function wpse_98269_script()
{
    if ( ! isset ( $GLOBALS['post'] ) )
        return;

    $post_type = get_post_type( $GLOBALS['post'] );

    if ( ! post_type_supports( $post_type, 'custom-fields' ) )
        return;
    ?>
<script>
    if ( jQuery( "[value='demo_data']" ).length < 1 ) // avoid duplication
        jQuery( "#metakeyselect").append( "<option value='demo_data'>demo_data</option>" );
</script>
    <?php
}

参考文献

注:本文内容整合自 Google/Baidu/Bing 辅助翻译的英文资料结果。如果您对结果不满意,可以加入我们改善翻译效果:薇晓朵技术论坛。