Support » Plugin: Exports and Reports » Serialization Arrays

  • Resolved lok1728


    I have a table with the following:
    s_meta_value with the following array (an array within an array?):

    The last value list of numbers are post ID’s that I need use to select for the report. How do I go about extracting each of those ID’s to use for the WHERE clause?
    Unfortunately I didn’t make/create the table, it’s from a plugin otherwise I probably would not have serialized those ID’s so they could be JOIN and searched.
    I’ve tried SUBSTRING_INDEX but this doesn’t work as the value is “40,268,18,319”

Viewing 1 replies (of 1 total)
  • Plugin Author Scott Kingsley Clark


    You could try a custom display function to take that value and do what you want to it.

     * Custom Display Function for Exports and Reports
     * @param string $value The value of the current field
     * @param array $full The values for all of the fields ($another_value = $full[ 'another_field' ])
     * @param string $field The current field name
     * @param WP_Admin_UI $obj The WP_Admin_UI class object (used for the admin screens in Exports and Reports)
     * @return string The value to display in the report
    function your_custom_display_function ( $value, $full, $field, $obj = null ) {
        // Unserialize array
        $unserialized = @unserialize( $value );
        $value = '';
        // Make sure $unserialized is an array and post_ids key is set
        if ( is_array( $unserialized ) && isset( $unserialized[ 'post_ids' ] ) ) {
            $ids = explode( ',', trim( $unserialized[ 'post_ids' ] ) );
            foreach ( $ids as $k => $id ) {
                $ids[ $k ] = get_the_title( (int) $id );
            $value = implode( ', ', $ids );
        return $value;
Viewing 1 replies (of 1 total)
  • The topic ‘Serialization Arrays’ is closed to new replies.