没有什么可以“生成”。Elementor所做的只是给出一个如何将其短代码用于特定项目的示例。您只需要一个短代码client
, 它接受一个参数以确定要显示的客户端:
add_shortcode(
\'client\',
function( $atts ) {
$atts = shortcode_atts( [ \'id\' => null ], $atts, \'client\' );
if ( $atts[\'id\'] ) {
$post = get_post( $atts[\'id\'] );
return $post->post_title;
}
}
);
因此,可以使用基本短代码输出给定帖子ID的帖子标题。
这就是您所需要的所有短代码,以便为您的所有客户帖子工作。没有必要为每个帖子生成一些东西。然而,您可能想要做的,听起来像Elementor所做的,是为每个帖子提供一个如何使用短代码的预览,以避免用户自己编写。
要做到这一点,您可以向posts列表表中添加一列。假设您的帖子类型被调用client
, 可以使用添加列manage_client_posts_columns
:
add_filter(
\'manage_client_posts_columns\',
function( $columns ) {
$columns[\'shortcode\'] = \'Shortcode\';
return $columns;
},
100
);
然后你可以用
manage_client_posts_custom_column
. 您只需打印以当前帖子ID为前缀的短代码:
add_action(
\'manage_client_posts_custom_column\',
function( $column, $post_id ) {
if ( \'shortcode\' === $column ) {
echo \'[client id="\' . $post_id . \'"]\';
}
},
10,
2
);