Custom Fields
Support General Retrieving data right after saving

  • Creator
  • #19033
    Resolved Dave

    Hi Ahn,

    I've got a strange issue. That I'm not sure how to solve.

    I am using MB Custom Table to store my data and the MB Frontend Submission was not good enough for my needs. I created my own API routes and I'm performing CRUD operations with global $wpdb methods.

    Here is the problem. When I update a column in the custom table with $wpdb->update() and then I run rwmb_meta( 'field_name', null, $ID ) the returned information from the rwmb_meta() is not the updated values. I was running this example with an oembed type field. I am storing a YouTube url but I want to return the updated html to the user.

Viewing 4 replies - 1 through 4 (of 4 total)
  • Author
  • #19046
    Long Nguyen

    Hi Dave,

    If you are using the custom table to save the value, please use this code to get the value

    $value = rwmb_meta( $field_id, ['storage_type' => 'custom_table', 'table' => $table_name] );
    echo $value;

    and regarding the Oembed type, you can use the function rwmb_the_value() which outputs the HTML of the field.

    For further information, please follow the documentation


    Unfortunately, this did not work. No change.

    I've dug into the code to try and figure out what is going on and I keep coming back to this function.
    'public static function call()' in this file '/inc/field.php'.

    It calls 'call_user_func_array( array( RWMB_Helpers_Field::get_class( $field ), $method ), $args )' but I'm confused where this goes.

    Remember, I'm updating the custom table in the database manually with $wpdb->update() and then calling rwmb_meta( $field_id, ['storage_type' => 'custom_table', 'table' => $table_name] ); right afterwards.

    The issue is that I'm calling these in the same server request. If I send another request and ask for the data with rwmb_meta(), it comes back correct.

    The reason I need this to work is that I'm also using FacetWP and I want to index a post after saving. When I run the FacetWP index function the data it's using to index is INCORRECT!

    Anh Tran

    Hi Dave,

    It might relate to how rwmb_meta work with custom tables. We implemented a cache layer for the custom table storage, the code is in the inc/class-rwmb-table-storage.php, which is like this:

    public function get( $object_id, $meta_key, $args = false ) {
        if ( is_array( $args ) ) {
            $single = ! empty( $args['single'] );
        } else {
            $single = (bool) $args;
        $default = $single ? '' : array();
        $row = MB_Custom_Table_Cache::get( $object_id, $this->table );
        return ! isset( $row[ $meta_key ] ) ? $default : maybe_unserialize( $row[ $meta_key ] );

    In this case, as you already use $wpdb to update data, I'd suggest using it to get data to avoid the caching problem.


    Thank you Anh!

    I went to inc/class-mb-custom-table-cache.php and set $row = false; in the get() function. Then it fixed things (even though I won't have the benefit of the caching).

    The FacetWP is still complaining but it may be because of something else.

Viewing 4 replies - 1 through 4 (of 4 total)
  • You must be logged in to reply to this topic.