可以使用wp_insert_post_data
钩
function house_post_slug( $data ) {
if ( $data[\'post_type\'] == \'houses\' ) {
$permalink = \'\';
if ( isset ( $_POST[\'ACF Code Field\'] ) ) {
$permalink = $_POST[\'ACF Code Field\'];
}
if ( isset ( $_POST[\'post_title\'] ) ) {
$permalink .= \'-\' . $_POST[\'post_title\'];
}
$data[\'post_name\'] = sanitize_title( $permalink )
}
error_log( \'=== Filter $data ===\');
error_log( print_r($data, true) );
return $data;
}
add_filter( \'wp_insert_post_data\', \'house_post_slug\' );
所以这个过滤器要做的就是拦截
$data
在WordPress中,检查
post_type
字段用于自定义帖子类型,因此它只会针对特定的CPT激发。
然后检查是否设置了ACF代码字段。如果是,则将`$permalink设置为该值。
我没有使用ACF,所以我不确定他们使用的是什么结构。您可以通过添加以下内容查看此转储:
error_log( print_r ( $_POST, true ) );
接下来,它将检查
post_title
键已设置。如果是,那么它将附加
-
无论
post_title
是
最后,我们设置post_name
输入$data
到的净化版本$permalink
然后把它还给我。
我放了两个error_log()
语句,以便查看$data
用于诊断目的。