您可以在管理面板的分类关系字段中显示 ACF 字段吗?
Can you display an ACF field in a taxonomy relationship field in the admin panel?
我有一个城市名称分类法。他们有一个州的 ACF 字段。但是,当您编辑与此分类相关联的 post 类型时,您只能在分类 select 列表中看到城市名称。对于像波特兰这样的城市来说,这可能是个问题,在美国至少有 2 个这样的城市。斯普林菲尔德等也是如此
有谁知道当您编辑 post 类型时,我是否可以应用一些挂钩在管理面板中显示带有标题的 ACF 字段?
下图应该可以说明需求。基本上,我只想说缅因州波特兰,而不仅仅是波特兰(其他城市也一样)。但是我需要在字段中分开名称,所以我不能只分别用它们的州命名城市。
以前有人做过吗?
我尝试使用谷歌搜索并使用 ACF 的扩展插件,但几乎找到了在分类编辑屏幕中添加列的结果,而我不需要这些。它只是在 post 旁边的分类模块中,当您编辑时需要某种额外的字段,或者能够将标题与 ACF 字段连接起来。
更新
感谢 Orbital 的帮助,我能够让它完成我需要的事情。 is_admin 部分没有工作,因为列表是由 ajax 检索的,所以我不得不偷偷摸摸。这可能不是最安全的方法,但该功能是无害的,所以我对此并不担心。最终代码如下:
if( current_user_can( 'manage_options' ) && strpos($_SERVER['REQUEST_URI'], "wp-json" ) == 1 ) {
add_filter('get_term', 'change_term_name_at_admin', 10, 2);
function change_term_name_at_admin($term, $taxonomy) {
if ($taxonomy == 'markets') {
$key_field_acf = "markets_" . $term->term_id;
$state_name = get_field( 'state', $key_field_acf );
if ($state_name != "") {
$new_name = $term->name . ', ' . $state_name;
$term->name = $new_name;
}
}
return $term;
}
}
试试这个代码
我们仅将 your_taxonomy_name 的 Wordpress 管理员的显示格式更改为“术语名称 - 州名称”
add_filter('get_term', 'change_term_name_at_admin', 10, 2);
function change_term_name_at_admin($term, $taxonomy) {
//only for admin, not front
if( is_admin() ) {
if ($taxonomy == 'your_taxonomy_name') {
$key_field_acf = "your_taxonomy_name_" . $term->term_id;
$state_name = get_field( 'state_name ', $key_field_acf );
if ($new_name !="") {
$new_name = $term->name . ' -' . $state_name;
$term->name = $new_name;
}
}
}
return $term;
}
更改此行
if ($taxonomy == 'your_taxonomy_name') {
并在这一行
$key_field_acf = "your_taxonomy_name_" . $term->term_id;
your_taxonomy_name 到您的城市分类名称
我有一个城市名称分类法。他们有一个州的 ACF 字段。但是,当您编辑与此分类相关联的 post 类型时,您只能在分类 select 列表中看到城市名称。对于像波特兰这样的城市来说,这可能是个问题,在美国至少有 2 个这样的城市。斯普林菲尔德等也是如此
有谁知道当您编辑 post 类型时,我是否可以应用一些挂钩在管理面板中显示带有标题的 ACF 字段?
下图应该可以说明需求。基本上,我只想说缅因州波特兰,而不仅仅是波特兰(其他城市也一样)。但是我需要在字段中分开名称,所以我不能只分别用它们的州命名城市。
以前有人做过吗?
我尝试使用谷歌搜索并使用 ACF 的扩展插件,但几乎找到了在分类编辑屏幕中添加列的结果,而我不需要这些。它只是在 post 旁边的分类模块中,当您编辑时需要某种额外的字段,或者能够将标题与 ACF 字段连接起来。
更新
感谢 Orbital 的帮助,我能够让它完成我需要的事情。 is_admin 部分没有工作,因为列表是由 ajax 检索的,所以我不得不偷偷摸摸。这可能不是最安全的方法,但该功能是无害的,所以我对此并不担心。最终代码如下:
if( current_user_can( 'manage_options' ) && strpos($_SERVER['REQUEST_URI'], "wp-json" ) == 1 ) {
add_filter('get_term', 'change_term_name_at_admin', 10, 2);
function change_term_name_at_admin($term, $taxonomy) {
if ($taxonomy == 'markets') {
$key_field_acf = "markets_" . $term->term_id;
$state_name = get_field( 'state', $key_field_acf );
if ($state_name != "") {
$new_name = $term->name . ', ' . $state_name;
$term->name = $new_name;
}
}
return $term;
}
}
试试这个代码
我们仅将 your_taxonomy_name 的 Wordpress 管理员的显示格式更改为“术语名称 - 州名称”
add_filter('get_term', 'change_term_name_at_admin', 10, 2);
function change_term_name_at_admin($term, $taxonomy) {
//only for admin, not front
if( is_admin() ) {
if ($taxonomy == 'your_taxonomy_name') {
$key_field_acf = "your_taxonomy_name_" . $term->term_id;
$state_name = get_field( 'state_name ', $key_field_acf );
if ($new_name !="") {
$new_name = $term->name . ' -' . $state_name;
$term->name = $new_name;
}
}
}
return $term;
}
更改此行
if ($taxonomy == 'your_taxonomy_name') {
并在这一行
$key_field_acf = "your_taxonomy_name_" . $term->term_id;
your_taxonomy_name 到您的城市分类名称