自定义域中的帖子列表

时间:2013-04-05 作者:Chris

我有个问题。我有一个自定义的帖子类型,叫做Place。我有一种情况,那就是可以有适当的位置。我想要一个自定义字段parent_place 在那里我可以选择一个地方的家长
该位置可以没有父级,也可以只有一个父级。

有没有可能列出所有帖子(type = place) 在自定义字段中选择其中一个?在自定义字段的插件中,我可以选择dropbox、radio等,但我必须键入值。我如何自动填写所有帖子的列表,哪种类型是Place?

2 个回复
SO网友:Michal Mau

这取决于您用来生成自定义字段的插件。

例如Advanced Custom Fields 插件内置了此选项-字段类型为“Post Object“。

Documentation:
ACF > Field Types > Post Object

Screenshot:

ACF Post Object Options

SO网友:brasofilo

正如Michal Mau指出的那样,ACF可以轻松有效地自动化此类自定义字段/元框管理。

这个manual mode 使用动作挂钩add_meta_boxsave_post. 在本例中,您必须将指示的数组调整为array( \'place\' ). 查看评论了解详细信息:

add_action( \'add_meta_boxes\', \'add_custom_box_wpse_94701\' );
add_action( \'save_post\', \'save_postdata_wpse_94701\', 10, 2 );

function add_custom_box_wpse_94701() 
{
    // Post types to insert the meta box. Adjust array <-------
    foreach( array( \'post\', \'portfolio\' ) as $pt )
        add_meta_box(
            \'sectionid_wpse_94701\',
            __( \'Custom parent\' ), 
            \'blogroll_box_wpse_94701\',
            $pt,
            \'side\'
        );
}


function blogroll_box_wpse_94701() 
{
    global $post, $typenow;

    // Get all posts of a type, excluding the current post
    $args = array(
        \'numberposts\' => -1,
        \'post_type\'   => $typenow,
        \'post_status\' => \'publish,future\',
        \'exclude\'     => $post->ID,
    );
    $get_posts = get_posts( $args );

    $saved = get_post_meta( $post->ID, \'custom_parent\', true);

    // Security
    wp_nonce_field( plugin_basename( __FILE__ ), \'noncename_wpse_94701\' );

    // Dropdown
    echo \'<select name="custom_parent" id="custom_parent">
        <option value="">- Select -</option>\';
    foreach ( $get_posts as $parent_post ) 
    {
        printf(
            \'<option value="%d" %s> %s</option>\',
            $parent_post->ID,
            selected( $saved, $parent_post->ID, false),
            $parent_post->post_title
        );
    }
    echo \'</select>\';
}


function save_postdata_wpse_94701( $post_id, $post_object ) 
{
    // Verify auto save 
    if ( defined( \'DOING_AUTOSAVE\' ) && DOING_AUTOSAVE ) 
        return;

    // Security
    if ( 
        !isset( $_POST[\'noncename_wpse_94701\'] ) 
        || !wp_verify_nonce( $_POST[\'noncename_wpse_94701\'], plugin_basename( __FILE__ ) ) 
        )
        return;

    // Allowed post types. Adjust array <-------
    $allowed_post_types = array( \'post\', \'portfolio\' );
    if ( !in_array( $post_object->post_type, $allowed_post_types ) )
        return;

    // Process post data
    if ( isset( $_POST[\'custom_parent\'] )  )
        update_post_meta( $post_id, \'custom_parent\', $_POST[\'custom_parent\'] );
    else 
        delete_post_meta( $post_id, \'custom_parent\' );
}
enter image description hereenter image description here

结束

相关推荐

保存Metabox可重复字段

这是我正在改编的代码https://gist.github.com/2057532. 问题是我无法保存我创建的新字段中的内容。我已经检查了这里的其他问题,但没有一个对我有帮助。知道问题出在哪里吗?add_action(\'admin_init\', \'slider_metabox_caption\', 1); function slider_metabox_caption() { add_meta_box( \'repeatable-fields\', \'Captions\', \'r