如何使 Wordpress save_post_($post-type) 挂钩适用于多个自定义 Post 类型
How to make Wordpress save_post_($post-type) hook works with multiple Custom Post Types
我有一个与 save_post_($post-type) hook 和 ACF gallery 字段相关的问题。
我从某处得到了这个代码片段。让我解释一下:我创建了一个 ACF 画廊字段(acf-gallery
是字段名称)显示在 Custom Post Type(cpt1
是 slug)然后使用这个片段来设置第一张图片就像 Woocommerce 所做的那样,保存时将此图库作为特色图片。
但是如果我想让它与另一个自定义 Post 类型一起使用怎么办(假设 slug 是 cpt2
)?我可以用 array( 'cpt1', 'cpt2' )
代替 cpt1
吗?有没有办法包含多个自定义 post 类型?
/* Set the first image generated by ACF gallery field as featured image */
add_action( 'save_post_cpt1', 'set_featured_image_from_gallery' );
function set_featured_image_from_gallery() {
global $post;
$post_id = $post->ID;
$images = get_field('acf_gallery', $post_id, false);
$image_id = $images[0];
if ( $image_id ) {
set_post_thumbnail( $post_id, $image_id );
}
}
我根据下面的评论使用 save-post 钩子编辑了这个片段。但我不知道它是否有效。有人可以帮忙吗?
/* Set the first image generated by ACF gallery field as featured image */
add_action( 'save_post', 'set_featured_image_from_gallery' );
function set_featured_image_from_gallery($post_id) {
if (get_post_type($post_id) != array( 'cpt1', 'cpt2')) {
return;
}
$has_thumbnail = get_the_post_thumbnail($post_id);
if ( !$has_thumbnail ) {
$images = get_field('acf_gallery', $post_id, false);
$image_id = $images[0];
if ( $image_id ) {
set_post_thumbnail( $post_id, $image_id );
}
}
}
我通常使用 save_post
钩子,$post_id
变量,get_post_type
和 in_array
函数。
function set_featured_image_from_gallery($post_id)
{
$included_cpts = array('cpt1', 'cpt2', 'cpt3');
if (in_array(get_post_type($post_id), $included_cpts)) {
$has_thumbnail = get_the_post_thumbnail($post_id);
if (!$has_thumbnail) {
$images = get_field('acf_gallery', $post_id, false);
$image_id = $images[0];
if ($image_id) {
set_post_thumbnail($post_id, $image_id);
}
}
}
}
add_action('save_post', 'set_featured_image_from_gallery');
我有一个与 save_post_($post-type) hook 和 ACF gallery 字段相关的问题。
我从某处得到了这个代码片段。让我解释一下:我创建了一个 ACF 画廊字段(acf-gallery
是字段名称)显示在 Custom Post Type(cpt1
是 slug)然后使用这个片段来设置第一张图片就像 Woocommerce 所做的那样,保存时将此图库作为特色图片。
但是如果我想让它与另一个自定义 Post 类型一起使用怎么办(假设 slug 是 cpt2
)?我可以用 array( 'cpt1', 'cpt2' )
代替 cpt1
吗?有没有办法包含多个自定义 post 类型?
/* Set the first image generated by ACF gallery field as featured image */
add_action( 'save_post_cpt1', 'set_featured_image_from_gallery' );
function set_featured_image_from_gallery() {
global $post;
$post_id = $post->ID;
$images = get_field('acf_gallery', $post_id, false);
$image_id = $images[0];
if ( $image_id ) {
set_post_thumbnail( $post_id, $image_id );
}
}
我根据下面的评论使用 save-post 钩子编辑了这个片段。但我不知道它是否有效。有人可以帮忙吗?
/* Set the first image generated by ACF gallery field as featured image */
add_action( 'save_post', 'set_featured_image_from_gallery' );
function set_featured_image_from_gallery($post_id) {
if (get_post_type($post_id) != array( 'cpt1', 'cpt2')) {
return;
}
$has_thumbnail = get_the_post_thumbnail($post_id);
if ( !$has_thumbnail ) {
$images = get_field('acf_gallery', $post_id, false);
$image_id = $images[0];
if ( $image_id ) {
set_post_thumbnail( $post_id, $image_id );
}
}
}
我通常使用 save_post
钩子,$post_id
变量,get_post_type
和 in_array
函数。
function set_featured_image_from_gallery($post_id)
{
$included_cpts = array('cpt1', 'cpt2', 'cpt3');
if (in_array(get_post_type($post_id), $included_cpts)) {
$has_thumbnail = get_the_post_thumbnail($post_id);
if (!$has_thumbnail) {
$images = get_field('acf_gallery', $post_id, false);
$image_id = $images[0];
if ($image_id) {
set_post_thumbnail($post_id, $image_id);
}
}
}
}
add_action('save_post', 'set_featured_image_from_gallery');