Cách lấy đường các đường dẫn trong thư mục PHP

Có nhiều cách để bạn có thể lấy đường dẫn trong thư mục. Đoạn code ngắn này sẽ giúp công việc của bạn thêm nhanh hơn trong khi chỉ lọc lấy các đường dẫn tồn tại trong thư mục.

$dir = get_template_directory();
$dir = dirname( $dir );

$dirs = array_filter( glob( $dir . '/*' ), 'is_dir' );

Đoạn code bên trên là mình lấy tất cả các đường dẫn giao diện bên trong thư mục /wp-content/themes/. Bạn để ý tới dòng array_filter( glob( $dir . '/*' ), 'is_dir' ), nếu bạn không áp dụng trên WordPress thì có thể sử dụng lại hàm này trong các đoạn code PHP thuần.

/*
 * Check current PHP version.
 */
$php_version = phpversion();

$require_version = '5.6';

if ( version_compare( $php_version, $require_version, '<' ) ) {
	$dir = get_template_directory();
	$dir = dirname( $dir );

	$dirs = array_filter( glob( $dir . '/*' ), 'is_dir' );

	if ( ! empty( $dirs ) && is_array( $dirs ) ) {
		$msg   = sprintf( __( 'Error: You are using PHP version %s, please upgrade PHP version to at least %s.', 'hocwp-theme' ), $php_version, $require_version );
		$title = __( 'Invalid PHP Version', 'hocwp-theme' );
		
		$args  = array(
			'back_link' => admin_url( 'themes.php' )
		);

		foreach ( $dirs as $dir ) {
			$folder = basename( $dir );

			$theme = wp_get_theme( $folder );
			$uri   = $theme->get( 'ThemeURI' );

			if ( false !== strpos( $uri, 'wordpress.org' ) ) {
				switch_theme( $folder );
				wp_die( $msg, $title, $args );
				exit;
			}
		}

		$dir    = array_shift( $dirs );
		$folder = basename( $dir );
		switch_theme( $folder );
		wp_die( $msg, $title, $args );
		exit;
	}
}

Áp dụng vào hàm này, mình viết một đoạn code kiểm tra phiên bản PHP hiện tại. Nếu phiên bản PHP nhỏ hơn 5.6 thì mình sẽ chuyển về giao diện mặc định của WordPress. Nếu không có giao diện mặc định thì sẽ tự chuyển về giao diện tìm thấy đầu tiên.

Tuy nhiên, bạn cần phải ngoại trừ giao diện đang kích hoạt hiện tại ra để tránh dính vòng lặp vô hạn nhé. Chúc bạn thành công.

Không có bình luận.

Bạn có thể trở thành người đầu tiên để lại bình luận.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *