仅使用第一个元字段
是的,这是因为$new_slug
只包含一个元maker
.
所以如果你想添加其他元model
和year
, 还有一个鼻涕虫<maker>-<model>-<year>
, 您可以尝试下面的代码-只需替换$new_slug = get_post_meta($post_id,\'maker\', true);
在代码中使用以下内容:
注意:您应该使用first snippet 在问题中
// List of meta that will be added to the post slug (post_name). Just add another
// get_post_meta() if you want to add another meta to the slug. And just reposition
// the array items based on your preferences, e.g. you could put the \'year\' before
// \'maker\'.
$meta = array(
get_post_meta( $post_id, \'maker\', true ),
get_post_meta( $post_id, \'model\', true ),
get_post_meta( $post_id, \'year\', true ),
);
$new_slug = implode( \'-\', array_filter( $meta ) );
仅针对我的CPT“;“汽车”;
你可以使用get_post_type()
像这样:
add_action( \'save_post\', \'set_slug\' );
function set_slug( $post_id ) {
// Do nothing if the post type is NOT "cars".
if ( \'cars\' !== get_post_type( $post_id ) ) {
return;
}
// ... your code here.
}
但更简单的选择是使用
save_post_<post type>
hook 而不是
save_post
像这样:
add_action( \'save_post_cars\', \'set_slug\' );
function set_slug( $post_id ) {
// ... your code here.
}
其他注释只需删除$post_type = get_post_type($post,\'cars\', true);
从您的代码。
更新帖子之前,您应该确保slug与$new_slug
变量例如,添加以下内容after 以上$new_slug = implode( \'-\', array_filter( $meta ) );
:
if ( strtolower( $new_slug ) === get_post_field( \'post_name\', $post_id ) ) {
return;
}
“li>”;set\\U slug“设置”;是一个非常通用的名称,因此请使用一个足够唯一的更好的名称,例如。wpse_387941_set_slug
.. (并确保在remove_action()
和add_action()
电话)。