WordPress как на ладони

Хук на Post

Помогите решить вопрос, я использую вот этот код

add_action('wp_insert_post_data', array($this, 'nts_check_update_post'), 10, 3);

моя функция nts_check_update_post срабатывает тогда как я обновляю пост вручную, можно ли как-то вызвать эту функцию в момент открытия поста в админке ? Спасибо.

0
evhenii-liashko
5.1 год назад
  • 1

    Какие переменный использует ваша функция?

    Для старого редактора, можно использовать например action
    edit_form_advanced или edit_form_top или post_edit_form_tag

    add_action('edit_form_advanced', 'action_function_name_5085');
    function action_function_name_5085( $post ){
    	if ($post->post_type == 'ваш_post_type' && $post->post_status == 'publish') {
    		// тут действия вашей функции
    	}
    }
    evhenii-liashko 5.1 год назад

    Вот так она выглядит

    function nts_check_update_post($data, $post)
    	{
    		if ($data['post_type'] == 'post' && $data['post_status'] == 'publish') {
    			if (isset($post['nts_icon'])) {
    				$link = get_field_object('link',$post['ID']);
    				NTS_Parser::parseAndSetPostIcon($post['ID'], [
    					'nts_icon' => $post['nts_icon'],
    					'link' => $post['acf'][$link['key']]
    				]);
    
    			}
    		}
    		return $data;
    	}
    kaliyan 5.1 год назад

    А для какой цели вы хотите при открытии обновлять иконку?

    Прикол в том, что при открытии в админке (использовав хуки выше), у вас будет только объект поста $post.

    nts_icon - у вас лежит где-то в мета-полях?

    Вам нужно будет написать еще одну функцию. Примерно так:

    add_action('edit_form_advanced', 'action_function_name_5085');
    function action_function_name_5085($post){
    	if ($post->post_type == 'post' && $post->post_status == 'publish') {
    		// Этот код выполнится, при открытии опубликованной записи на редактирование в админке.
    		// Замечу - каждый раз при открытии.
    	}
    }
    evhenii-liashko 5.1 год назад

    у меня в произвольном поле лежит ссылка на сторонний сайт, я при открытии хочу тянуть ее значения, потом я вытаскиваю все фав иконки сайта и вывожу их на страничке поста, это все срабатывает только при обновлении, что не удобно для админа. Извините что может не понятно объясняю суть вопроса, мой опыт в php и wp только два месяца))

    evhenii-liashko 5.1 год назад

    Попробовал вашу написать через вашу функцию но дело в том что в $post нету произвольных полей и их значений

    kaliyan 5.1 год назад

    Текущие данные поста можно получить с помощью

    get_post_meta($post->ID, 'название_поля', true);
    Комментировать
На вопросы могут отвечать только зарегистрированные пользователи. Вход . Регистрация