Ответы пользователя по тегу PHP
  • Как используя контактную форму на странице добавить запись в пост wordpress?

    sjaserds
    @sjaserds Автор вопроса
    Студент
    Разобрался, необходимо в файл function.php, в моем случае это temlate-fucntion.php, добавить функцию, в которой я обрабатываю запросы $_POST и добавляю поля в мною зарегистрированный пост.
    Пример:

    function add_applicant_post_callback() {
    	$title = sanitize_text_field(stripslashes($_POST['title'])) ?? '';
    	$email = sanitize_text_field($_POST['email']) ?? null;
    	$phone = sanitize_text_field($_POST['phone']) ?? null;
    
    	// create data for new post
    	$post_data = array(
    		'post_title'    => sanitize_text_field( $title ),
    		'post_status'   => 'publish',
    		'post_author'   => 1,
    		'post_type'     => 'applicant',
    	);
    
    	// create post
    	$post_id = wp_insert_post( wp_slash($post_data), true );
    
    	// checking a post for creation
    	if( is_wp_error($post_id) ){
    		wp_send_json_error($post_id->get_error_message());
    	} else {
    		require_once(ABSPATH . 'wp-admin/includes/image.php');
    		require_once(ABSPATH . 'wp-admin/includes/file.php');
    		require_once(ABSPATH . 'wp-admin/includes/media.php');
    		
    		update_field( 'email', $email, $post_id );
    		update_field( 'phone', $phone, $post_id );
    	}
    	wp_send_json_success();
    }
    add_action( 'wp_ajax_nopriv_add_applicant', 'add_applicant_post_callback' );
    add_action( 'wp_ajax_add_applicant', 'add_applicant_post_callback' );


    И чтобы добавить в произвольное текстовое поле данные используем update_field().
    wp_ajax_nopriv_add_applicant - необходим для отправки данных для не зарегистрированных пользователей.
    Ответ написан
    Комментировать