用于在摘录内显示邮政自定义字段值的快捷代码

时间:2021-06-15 作者:Discover

我想创建一个快捷码,从帖子的自定义字段中提取值,并在摘录中返回该值。

我已经有了自定义值的函数:

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\');
并筛选标题:

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 );
)
我认为通过添加摘录过滤器:

add_filter( \'oceanwp_excerpt\', \'do_shortcode\');
它会修复它,但它没有。

我尝试添加了一些其他过滤器,但最终打破了WordPress)。

如果自定义值为Ice Cream. 如果我的摘录是Favorite [geo_name] 它只返回Favorite.

请协助!

1 个回复
SO网友:Fabian Mossberg

尽管这是针对OceanWP, 解决方案是简单的Wordpress。

将这两行添加到functions.php 以两种方式渲染短代码the_excerpt()get_the_excerpt().

add_filter( \'the_excerpt\', \'do_shortcode\' );
add_filter(\'get_the_excerpt\', \'do_shortcode\');

相关推荐

Has_excerpt()在wp_Query中不起作用

我正在尝试检查摘录,如果它不存在,则显示内容,但进行了修剪。目前没有显示任何内容。<?php if (has_excerpt() ): ?> <p><?php echo get_the_excerpt(); ?></p> <?php else: ?> <p><?php echo wp_trim_words(get_the_content(), 25); ?></p>&#x