Custom Fields
Re-Envisioned
Support General Creating a custom field with value from other custom fields

  • Creator
    Topic
  • #31792
    Resolved goninski@gmail.com
    Participant

    Hi

    Unfortunately the custom field variables in rankmath work only for textfields (text, textarea, wysiwyg). That's why I'm not able to create the seo-snippet content dynamicly from my other fields, like taxonomy etc.

    So I'm looking for a solution to create a new text field, which fetches the values from other custom fields. Is there any possibility for this? (note: the custom html field does not work either in rankmath)

    Thanks in Advance for your help
    Regards
    François

Viewing 7 replies - 1 through 7 (of 7 total)
  • Author
    Replies
  • #31796
    Long Nguyen
    Moderator

    Hi,

    It is possible. You can use Meta Box's action hooks like rwmb_{$meta_box_id}_after_save_post to update a field value from another custom field after saving the post.

    Please get more details on the documentation
    https://docs.metabox.io/actions/#rwmb_after_save_post
    https://docs.metabox.io/rwmb-set-meta/

    #31808
    goninski@gmail.com
    Participant

    great, I'll try. Thanks a lot !

    #32260
    goninski@gmail.com
    Participant

    Hello

    I was basicly succesfull with your help. One thing is not working though:

    When using this code on frontend of the post, it is working fine and showing the first name of the artist (fetched from custom taxonomy field):


    <?php
    $terms = get_the_terms( get_queried_object_id(), 'artists' );

    foreach ( $terms as $term ) {
    $term_name = rwmb_meta( 'fg_meta_artist_name', ['object_type' => 'term'], $term->term_id );
    $term_name_first = rwmb_meta( 'fg_meta_artist_name_first', ['object_type' => 'term'], $term->term_id );

    $value $term_name_first;
    echo $value;
    }

    ?>

    When trying to fill an empty custom field (text) with the same value, the field it not filled up:


    <?php
    add_action( 'rwmb_after_save_post', function( $post_id ) {

    < code from above (without echo) >

    update_post_meta( $post_id, 'fg_taxo_object_artist_names', $value );
    } );

    ?>

    Both fields are text fields.
    Do you see any reason why this is not working?

    Thanks a lot in advance.
    Regards, François

    #32279
    Long Nguyen
    Moderator

    Hi,

    Did you add the frontend submission shortcode on the single post? Following the code, I think you are trying to update the field value fg_taxo_object_artist_names of the submitted post by the term meta of the current post which shows the frontend submission form.

    #32340
    goninski@gmail.com
    Participant

    Hello

    Yes the 1st code is implemented on the single post template (cpt) (php code block in oxygen builder).

    The 2nd Code is in a code snippet and should update the field 'fg_taxo_object_artist_names' after saving a post in the editor (no frontend submission).

    But the field is not updatet. I guess the field values of the taxonomies are not fetched?
    (why is it working on frontend but not on backend?)

    Hope I was able to explain more clear.

    #32347
    Long Nguyen
    Moderator

    Hi,

    Yes, it might not work on the backend because the function get_queried_object_id() is used to get the post ID on the frontend. You can follow this topic to get the post ID on the backend.
    https://metabox.io/support/topic/get-the-post-id-as-value/

    #32426
    goninski@gmail.com
    Participant

    Hi,

    Thanks for your hint. Unfortunately this to high for me. I can't see where to change to code to get the term id on backend.

    This is my code. I don't know if you can provide the correct snippet.
    If not, thanks anyway. I understand.

    <?php
    add_action( 'rwmb_after_save_post', function( $post_id ) {
    
    $terms = get_the_terms( get_queried_object_id(), 'artists' );
    foreach ( $terms as $term ) {
        $term_name = rwmb_meta( 'fg_meta_artist_name', ['object_type' => 'term'], $term->term_id );
        $term_name_first = rwmb_meta( 'fg_meta_artist_name_first', ['object_type' => 'term'], $term->term_id );
    
        $value = $term_name_first;
    }
            update_post_meta( $post_id, 'fg_taxo_object_artist_names', $value );
    } );
    ?>
Viewing 7 replies - 1 through 7 (of 7 total)
  • You must be logged in to reply to this topic.