保存多个选项还是将多个项目保存在一个选项中更好?

时间:2014-08-03 作者:grappler

我向自定义分类法添加了多个字段。我跟着Pippin\'s tutorial.

此方法为每个分类项目创建一个选项。多个字段保存在taxonomy_id.

我不确定仅仅创建一个选项并在选项中使用分类id的多向数组是否会更好。

这两种不同方法的性能和数据库含义是什么?

编辑:

通常只会为单个分类法提取信息。

下面是两个代码示例。

/**
 * Save extra taxonomy fields callback function.
 *
 * Single Array
 */
public function save_taxonomy_custom_meta( $term_id, $tt_id ) {
    if ( isset( $_POST[\'term_meta\'] ) ) {

        $term_meta = get_option( \'playlist_\' . $term_id );
        $cat_keys = array_keys( $_POST[\'term_meta\'] );

        foreach ( $cat_keys as $key ) {
            if ( isset ( $_POST[\'term_meta\'][$key] ) ) {
                $term_meta[$key] = sanitize_text_field( $_POST[\'term_meta\'][$key] );
            }
        }
        // Save the option array.
        update_option(
            \'playlist_\' . $term_id,
            $term_meta
        );
    }
}

/**
 * Save extra taxonomy fields callback function.
 *
 * Multi-directional array
 */
public function save_taxonomy_custom_meta( $term_id, $tt_id ) {
    if ( isset( $_POST[\'term_meta\'] ) ) {

        $term_meta = get_option( \'playlist_\' . $term_id );
        $cat_keys = array_keys( $_POST[\'term_meta\'] );

        foreach ( $cat_keys as $key ) {
            if ( isset ( $_POST[\'term_meta\'][$key] ) ) {
                $term_meta[$key] = sanitize_text_field( $_POST[\'term_meta\'][$key] );
            }
        }
        //
        $term_meta[$term_id] = $term_meta;
        // Save the option array.
        update_option(
            \'plugin_name_playlist\',
            $term_meta
        );
    }
}

1 个回复
SO网友:Mark Kaplun

如果该选项是自动加载的(在pippin的代码中也是),那么除了编码风格之外,没有任何区别,因为所有可自动加载的选项都是在初始化时在一个查询中获取的,并缓存在内存中,此时get_option 不是访问php数组的包装器。

如果您决定使用非自动加载选项,那么您将如何使用数据成为一个问题,如果主要是为了获取单个术语的信息,那么使用多维数组来获取其他术语的信息是一种浪费。

结束