链接中的元框出现问题

时间:2012-02-24 作者:matoma16

我在管理的链接部分保存元框的数据时遇到问题。我的代码正在运行,因为当我在帖子或页面部分尝试它时,它会保存数据,但在链接中却不会。

这是我的密码。我应该写些别的东西而不是“save\\u post”吗?我看到一些使用过的“save\\u link”尝试过,尽管人们回复说它不存在,但它不起作用。。。我的意思是,当我将其添加到帖子或页面时,它会起作用,但当我将“页面”(或“帖子”)更改为“链接”时,当我添加元框时,不会保存任何内容,当我再次转到链接表单时,当我应该拥有图像的链接时,我的输入返回空白。数据也没有保存在数据库中,我也不知道为什么。

这是我的代码:

    add_action( \'admin_init\', \'meta_boxes_setupa\' );
function meta_boxes_setupa() {
    add_action( \'add_meta_boxes\', \'mytheme_add_box\' );
    add_action( \'save_post\', \'mytheme_save_data\', 10, 2 );
}
// add_action(\'admin_menu\', \'mytheme_add_box\');
// Add meta box
function mytheme_add_box() {
        add_meta_box(
                        \'my-meta-box\',
                        \'Ajouter le logo de la société\',
                        \'mytheme_show_box\',
                        \'link\',
                        \'normal\',
                        \'high\'
        );
}

// Callback function to show fields in meta box
function mytheme_show_box( $object, $box ) {
        // global $post;
        // echo \'<input type="hidden" name="mytheme_meta_box_nonce" value="\', wp_create_nonce(basename(__FILE__)), \'" />\';
        // $meta = get_post_meta($post->ID, \'_upload_image\', true);
        ?>
        <?php wp_nonce_field( basename( __FILE__ ), \'url_nonce\' ); ?>
                <label for="upload_image">Sélectionner le logo : </label>
                <input type="text" name="upload_image" id="upload_image" value="<?php echo esc_attr( get_post_meta( $object->ID, \'_upload_image\', true ) ); ?>" size="40" readonly="readonly" />
                <input type="button" name="upload_image_button" id="upload_image_button" value="Parcourir" ?>
        <?php
}


// Save data from meta box
function mytheme_save_data($post_id, $post) {
        if ( !isset( $_POST[\'url_nonce\'] ) || !wp_verify_nonce( $_POST[\'url_nonce\'], basename( __FILE__ ) ) )
        return $post_id;

    $post_type = get_post_type_object( $post->post_type );
    /* Check if the current user has permission to edit the post. */
    if ( !current_user_can( $post_type->cap->edit_post, $post_id ) )
        return $post_id;

    /* Get the posted data and sanitize it for use as an HTML class. */
        $new_meta_value = ( isset( $_POST[\'upload_image\'] ) ? sanitize_html_class( $_POST[\'upload_image\'] ) : \'\' );
    /* Get the meta key. */
    $meta_key = \'_upload_image\';
    /* Get the meta value of the custom field key. */
    $meta_value = get_post_meta( $post_id, $meta_key, true );
    /* If a new meta value was added and there was no previous value, add it. */
    if ( $new_meta_value && \'\' == $meta_value )
        add_post_meta( $post_id, $meta_key, $new_meta_value, true );
    /* If the new meta value does not match the old value, update it. */
    elseif ( $new_meta_value && $new_meta_value != $meta_value )
       update_post_meta( $post_id, $meta_key, $new_meta_value );
    /* If there is no new meta value but an old value exists, delete it. */
    elseif ( \'\' == $new_meta_value && $meta_value )
        delete_post_meta( $post_id, $meta_key, $meta_value );
}

function my_admin_scripts() {
        wp_enqueue_script(\'media-upload\');
        wp_enqueue_script(\'thickbox\');
        wp_register_script(\'my-upload\', get_bloginfo(\'template_url\') . \'/functions/my-script.js\', array(\'jquery\',\'media-upload\',\'thickbox\'));
        wp_enqueue_script(\'my-upload\');
}
function my_admin_styles() {
        wp_enqueue_style(\'thickbox\');
}
add_action(\'admin_print_scripts\', \'my_admin_scripts\');
add_action(\'admin_print_styles\', \'my_admin_styles\');
谢谢你的帮助!

1 个回复
最合适的回答,由SO网友:Stephen Harris 整理而成

你要找的钩子是edit_link (我找不到任何文档)。是从里面发射的wp_insert_link (无论何时创建或更新链接,都会触发自身)。

该操作只向回调传递一个参数,即链接的ID。因此,您需要将2更改为1add_action 电话:

add_action( \'edit_link\', \'mytheme_save_data\', 10, 1 );
并移除$post 回调函数中的变量:

function mytheme_save_data($post_id) {
     //Your function here
}
其他差异$object->ID. 对于链接,这应该是$object->link_id. edit_link 回调,您使用$post 获取帖子类型。此变量不再对您可用,并且在任何情况下links are not post typescurrent_user_can(\'manage_links\')

结束

相关推荐

你能让一个定制的metabox域成为保存新帖子的必填项吗?

我正在处理一个自定义的帖子类型,我删除了所有标准的wordpress表单项,并从零开始使用自定义的元框,除了标题字段。在我的情况下,选择一些自定义元下拉选择非常重要。是否有一个简单的解决方案,让他们在发布项目之前必须选择一些项目?我认为javascript是最简单的解决方案,但最好让用户知道发生了什么,比如如果他们试图发布但尚未选中,则突出显示框,另一个问题是下拉菜单,默认情况下,即使他们没有选择一个值,也已经选择了一个值