如何在发布 post 时为每个 post 使用 post 内容创建简码

how to create shortcode using post content for each post when the post is published

每次使用特定 post 内容发布 post 时,我都想创建短代码,这样我就有了每个不同 post 的短代码,为此我写了这个代码,但它不起作用,任何人都可以帮助。

add_action('publish_adsmanager_banner','create_banner_shortcode');

function create_banner_shortcode()
{    
    add_shortcode( 'banner_'.get_the_ID().'', 'custom_shortcode' ); 
}


function custom_shortcode($post_id) {

    $message = get_the_content($post_id);
    return $message;

}

如果您只将 id 作为属性传递给此短代码怎么办?

    add_shortcode( 'my_banner', 'custom_shortcode' ); // [my_banner id="123"]

function custom_shortcode( $atts ) {
    $atts = shortcode_atts(
        array(
            'id' => null,
        ),
        $atts
    );
    $message = get_the_content( $atts['id'] );
    return $message;
}

按照你原来的想法,你不能只创建一个id命名的短代码,它应该在每个wp init上注册。但是在这种情况下,很难仅从简码名称中获得 post 上下文,您必须在每个简码注册时传递一个 id。上面的解决方案将允许您保持 DRY,特别是如果您在使用它们时知道每个横幅的 ID。