Здравствуйте!
При создании записи я пытаюсь получить произвольное поле рубрики
Объясню в чем суть: на сайте есть категории товаров, и в каждой категории у товаров свои атрибуты
Так как заранее неизвестны все атрибуты для всех категорий нужно настроить это в админке, то есть чтобы атрибуты категории выводились списком при создании записи для выбора
Пытаюсь получить вручную (идея через ajax при изменении выбранной категории подгружать нужные поля), но у меня не работает ни get_term_metа(), ни get_field()
<?php
add_action('wp_ajax_load_custom_field_data','load_custom_field_data');
add_action('wp_ajax_nopriv_load_custom_field_data','load_custom_field_data');
function load_custom_fields_data(){
$termid = $_POST['termid'];
$metas = get_field('attributes',$termid);
var_dump($metas);
die();
}
add_action('add_meta_boxes', 'my_extra_fields', 1);
function my_extra_fields() {
add_meta_box( 'extra_fields', 'Атрибуты товара', 'extra_fields_box_func', 'post', 'normal', 'high' );
}
function extra_fields_box_func( $post ){
?>
<div id="extra_fields">
<script>
$('input[name="post_category[]"]').change(function() {
if ($(this).val() !== 1) {
data = {
'action': 'load_custom_field_data',
'termid': $(this).val()
}
$.post(ajaxurl,data,function(response) {
// Возвращает 0
console.log(response)
})
}
})
</script>
<!-- Пытался получить напрямую - тот же 0 (или array (0)) -->
<?php var_dump(get_field('image', 47)); ?>
<input type="hidden" name="extra_fields_nonce" value="<?php echo wp_create_nonce(__FILE__); ?>" />
</div>
<?php
}
add_action('save_post', 'my_extra_fields_update', 0);
function my_extra_fields_update( $post_id ){
if ( !isset($_POST['extra_fields_nonce']) || !wp_verify_nonce($_POST['extra_fields_nonce'], __FILE__) ) return false;
if ( defined('DOING_AUTOSAVE') && DOING_AUTOSAVE ) return false;
if ( !current_user_can('edit_post', $post_id) ) return false;
if ( !isset($_POST['extra']) ) return false;
$_POST['extra'] = array_map('trim', $_POST['extra']);
foreach( $_POST['extra'] as $key=>$value ){
if( empty($value) ){
delete_post_meta($post_id, $key);
continue;
}
update_post_meta($post_id, $key, $value);
}
return $post_id;
}