1

I want to create a shortcode that pulls value from a custom field of a post and returns that value inside excerpt.

I already have a function for the custom value:

function geo_name_function( $atts ) {

    $atts = shortcode_atts( array(
        'post_id' => get_the_ID(),
    ), $atts, 'geo_name' );

    return get_post_meta( $atts['post_id'], 'field_name', true );
}

add_shortcode('geo_name', 'geo_name_function');

And filter for the title:

add_filter( 'the_title', function( $geo_name_function ) {
    return do_shortcode( $geo_name_function );
});

add_filter( 'the_title', 'se385007_title_filter', 20, 2 );
function se385007_title_filter( $title, $post_id ) 
{
    $new_title = str_replace( "[geo_name]", "[geo_name post_id=$post_id]", $title );
    return do_shortcode( $new_title );
)

I thought that by adding the Excerpt filter:

add_filter( 'oceanwp_excerpt', 'do_shortcode');

It will fix it but it did not.

I tried adding few other filters but just ended up breaking WordPress ).

At the moment if Custom Value is Ice Cream. If my excerpt is Favorite [geo_name] it only returns Favorite.

Please assist!

1
  • oceanwp_excerpt is not a core WordPress hook. This question may require specific knowledge about whatever that third-party product is in order to answer, in which case it might be considered off-topic for our stack. Your best bet may be to pose the question in the product's official support channels.
    – bosco
    Commented Jun 15, 2021 at 3:39

1 Answer 1

0

Even though this is specific for OceanWP, the solution is plain Wordpress.

Add these two lines to the end of your functions.php to render the shortcodes in both the_excerpt() and get_the_excerpt().

add_filter( 'the_excerpt', 'do_shortcode' );
add_filter('get_the_excerpt', 'do_shortcode');
1
  • Thank you for your suggestion, I tried it, the solution did not work for me. I even tried on several WordPress installations
    – Discover
    Commented Jun 15, 2021 at 23:15

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.