Регистрируйте посещения моих страниц в wordpresss


У меня есть шорткод, который получает имя человека, вошедшего в wordpress, я хотел бы, чтобы этот шорткод, когда человек заходит на страницу, где у меня есть шорткод, создавал.текстовый файл и сохранял в нем свое имя

Это мой шорткод wordpress

function alertaLogin( $atts ) {
    global $current_user, $user_login;
    wp_get_current_user();
    add_filter('widget_text', 'apply_shortcodes');
    if ($user_login)
        return 'hola ' . $current_user->display_name;
    else
        return 'no ha iniciado session';
}

add_shortcode( 'shortcode_login', 'alertaLogin' );


$contenido = 'saludo';
$archivo = fopen('archivo.txt','a+');
fputs($archivo,$contenido);
fclose($archivo);

Как я могу создать .txt из этого шорткода для хранения данных в нем???

Author: Jack Johansson, 2021-01-11

1 answers

Хранить данные пользователя в общедоступном файле не очень хорошая идея. Лучшим способом было бы создать папку и сохранить ваш файл под ней. Кроме того, лучше использовать класс filesytem WordPress, а не напрямую использовать встроенные функции PHP. Вот краткое исправление:

function wpse381320_after_login( $atts ) {
    if ( is_user_logged_in() && WP_Filesystem() ) {

        global $wp_filesystem;

        // Set a path for your folder
        $wp_uploads    = wp_get_upload_dir();
        $content_dir   = trailingslashit( $wp_uploads[ 'basedir' ] ) . 'my-folder';
        $text_file     = trailingslashit( $content_dir ) . 'usernames.txt';
        $htaccess_file = trailingslashit( $content_dir ) . '.htaccess';

        // Get the current user
        $current_user = wp_get_current_user();

        // Create an empty directory
        if ( ! $wp_filesystem->is_dir( $content_dir ) ) {
            $wp_filesystem->mkdir( $content_dir, 0755 );
        }

        // Create the htaccess file
        if ( ! $wp_filesystem->is_file( $htaccess_file ) ) {
            $htaccess = $wp_filesystem->put_contents( $htaccess_file, 'deny from all', 0755 );
        }

        // Create the text file
        if ( ! $wp_filesystem->is_file( $text_file ) ) {
            $usernames = $wp_filesystem->put_contents( $text_file, '', 0755 );
        }

        // Add username to the file
        $usernames = $wp_filesystem->put_contents( $text_file, $current_user->display_name, 0755 );

    }
}

add_shortcode( 'shortcode_login', 'wpse381320_after_login' );

Пожалуйста, обратите внимание, что это демонстрация, и ее не следует копировать и вставлять. Доступ к файловой системе при каждой загрузке страницы может замедлить работу вашего сайта. Возможно, вы захотите разделить этот код на 2 разных части для повышения производительности.

Также не забывайте всегда проверять, нет ли какой-либо ошибки при работе с файловой системой, например, проверять результат $wp_filesystem->put_content() и т. Д.

 3
Author: Jack Johansson, 2021-01-11 18:42:02