diff --git a/assets/images/beer1.jpg b/assets/images/beer1.jpg new file mode 100644 index 0000000..d2805cc Binary files /dev/null and b/assets/images/beer1.jpg differ diff --git a/assets/images/grill1.jpg b/assets/images/grill1.jpg new file mode 100644 index 0000000..5ff779c Binary files /dev/null and b/assets/images/grill1.jpg differ diff --git a/assets/images/hero.jpg b/assets/images/hero.jpg new file mode 100644 index 0000000..0608a2b Binary files /dev/null and b/assets/images/hero.jpg differ diff --git a/assets/images/manifest.json b/assets/images/manifest.json new file mode 100644 index 0000000..4b2f139 --- /dev/null +++ b/assets/images/manifest.json @@ -0,0 +1,6 @@ +{ + "hero": "assets\/images\/hero.jpg", + "beer1": "assets\/images\/beer1.jpg", + "party1": "assets\/images\/party1.jpg", + "grill1": "assets\/images\/grill1.jpg" +} \ No newline at end of file diff --git a/assets/images/party1.jpg b/assets/images/party1.jpg new file mode 100644 index 0000000..3df094f Binary files /dev/null and b/assets/images/party1.jpg differ diff --git a/assets/pasted-20260121-163931-99f1ab39.png b/assets/pasted-20260121-163931-99f1ab39.png new file mode 100644 index 0000000..570ca55 Binary files /dev/null and b/assets/pasted-20260121-163931-99f1ab39.png differ diff --git a/fetch_images.php b/fetch_images.php new file mode 100644 index 0000000..40a1534 --- /dev/null +++ b/fetch_images.php @@ -0,0 +1,33 @@ + 'party friends beer', + 'beer1' => 'beer mug', + 'party1' => 'night club party', + 'grill1' => 'bbq grill meat' +]; + +$images = []; + +foreach ($queries as $key => $query) { + echo "Fetching image for: $query...\n"; + $url = 'https://api.pexels.com/v1/search?query=' . urlencode($query) . '&per_page=1&page=1'; + $data = pexels_get($url); + if ($data && !empty($data['photos'])) { + $photo = $data['photos'][0]; + $src = $photo['src']['large2x'] ?? $photo['src']['large']; + $dest = __DIR__ . '/assets/images/' . $key . '.jpg'; + if (download_to($src, $dest)) { + $images[$key] = 'assets/images/' . $key . '.jpg'; + echo "Downloaded to $dest\n"; + } else { + echo "Failed to download $src\n"; + } + } else { + echo "No photos found for $query\n"; + } +} + +file_put_contents(__DIR__ . '/assets/images/manifest.json', json_encode($images, JSON_PRETTY_PRINT)); + diff --git a/generate_content.php b/generate_content.php new file mode 100644 index 0000000..e4ad2e7 --- /dev/null +++ b/generate_content.php @@ -0,0 +1,20 @@ + [ + ['role' => 'system', 'content' => 'You are a bro-culture content creator.'], + ['role' => 'user', 'content' => $prompt], + ], + ] +); + +if (!empty($resp['success'])) { + $text = LocalAIApi::extractText($resp); + echo $text; +} else { + echo "AI Error: " . ($resp['error'] ?? 'unknown'); +} diff --git a/homepage_content.txt b/homepage_content.txt new file mode 100644 index 0000000..9f2a1a0 --- /dev/null +++ b/homepage_content.txt @@ -0,0 +1,134 @@ + +
+

REAL BRO BLOG

+ + + +

Beer, Parties, and the Lifestyle.

+
+ + + + + + + +
+ +

THE MANIFESTO

+ + + +

Welcome to Real Bro Blog — where cold ones are sacred, beats are curated, and good times are engineered, not wasted. This is about beer, parties, and the lifestyle that keeps the crew tight: throw epic hangs, master the pour, laugh loud, leave the place better than you found it. Be bold, be chill, be responsible — hydrate, watch out for your people, know your limits (and only drink if you’re of legal age). Live loud, host legendary, drink smart, and always have each other’s backs.

+ +
+ + + + + + + +

BRO TIPS OF THE WEEK

+ + + +
+ +
+
+ + +

Cooler engineering, bro: pre-chill your beer, freeze big water jugs so the ice won’t dilute the brew, rotate stock so the coldest cans are on top — and stash a water section so the squad stays hydrated between rounds.

+
+ + + +
+
+ + +

Playlist + pace: build 3-hour blocks that start chill and ramp up, queue up a backup speaker/phone, and read the room — keep late-night volume neighbor-friendly so the party doesn’t get cut off.

+
+ + + +
+
+ + +

Host like a legend: set out trash & recycle, have solid non-alc options, lock in rides or a designated-driver plan, and be the bro who checks on people — party hard, but keep your crew safe.

+
+ +
+ + + + + + + +

LATEST BRO STORIES

+ + + +
+ + + + +
+ + + + + + + +

MIGHTY BEER REVIEWS

+ + + +
+ + + + +
+ + + + + + + +
+ +

BRO OF THE MONTH

+ + + +
+ +
+
Legendary Bro
+
+ + + +
+

Meet "Big Dave" Miller.

+ + + +

Big Dave isn't just a bro; he's a legend. Last weekend, Dave managed to grill 50 burgers while simultaneously fixing a neighbor's lawnmower and maintaining a 3-0 winning streak in cornhole. His philosophy? "Keep the coals hot and the beer cold, and the rest will figure itself out."

+ + + +

Dave, we salute you. Enjoy the golden spatula, king.

+
+ +
+ +
+ diff --git a/includes/pexels.php b/includes/pexels.php new file mode 100644 index 0000000..26d3ffe --- /dev/null +++ b/includes/pexels.php @@ -0,0 +1,25 @@ + 0 ? $k : 'Vc99rnmOhHhJAbgGQoKLZtsaIVfkeownoQNbTj78VemUjKh08ZYRbf18'; +} +function pexels_get($url) { + $ch = curl_init(); + curl_setopt_array($ch, [ + CURLOPT_URL => $url, + CURLOPT_RETURNTRANSFER => true, + CURLOPT_HTTPHEADER => [ 'Authorization: '. pexels_key() ], + CURLOPT_TIMEOUT => 15, + ]); + $resp = curl_exec($ch); + $code = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + if ($code >= 200 && $code < 300 && $resp) return json_decode($resp, true); + return null; +} +function download_to($srcUrl, $destPath) { + $data = @file_get_contents($srcUrl); + if ($data === false) return false; + if (!is_dir(dirname($destPath))) mkdir(dirname($destPath), 0775, true); + return file_put_contents($destPath, $data) !== false; +} diff --git a/wp-content/mu-plugins/bro-styles.php b/wp-content/mu-plugins/bro-styles.php index 530f23a..7226929 100644 --- a/wp-content/mu-plugins/bro-styles.php +++ b/wp-content/mu-plugins/bro-styles.php @@ -1,12 +1,36 @@ - :root { --wp--preset--color--primary: #FFBF00 !important; } - body { background-color: #0A0A0A !important; color: #FFFFFF !important; } - .wp-block-post-title a, h1, h2, h3 { color: #FFBF00 !important; font-weight: 900 !important; text-transform: uppercase; } - .wp-block-navigation a { color: #FFFFFF !important; font-weight: bold; } - .wp-block-navigation a:hover { color: #FFBF00 !important; } - .wp-block-button__link { background-color: #FFBF00 !important; color: #000 !important; border-radius: 4px !important; font-weight: bold !important; } - footer { border-top: 1px solid #333; padding-top: 20px; } + :root { + --wp--preset--color--primary: #FFBF00 !important; + --bro-amber: #FFBF00; + --bro-dark: #0A0A0A; + --bro-glass: rgba(255, 191, 0, 0.1); + } + body { background-color: var(--bro-dark) !important; color: #FFFFFF !important; font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif; } + .wp-block-post-title a, h1, h2, h3 { color: var(--bro-amber) !important; font-weight: 900 !important; text-transform: uppercase; letter-spacing: -0.02em; } + .wp-block-navigation a { color: #FFFFFF !important; font-weight: bold; text-transform: uppercase; font-size: 0.9rem; } + .wp-block-navigation a:hover { color: var(--bro-amber) !important; } + .wp-block-button__link { background-color: var(--bro-amber) !important; color: #000 !important; border-radius: 8px !important; font-weight: 800 !important; text-transform: uppercase; border: none !important; } + + /* Glassmorphism effect for groups */ + .has-background.has-black-background-color { + background-color: rgba(20, 20, 20, 0.8) !important; + backdrop-filter: blur(10px); + border: 1px solid rgba(255, 191, 0, 0.2); + box-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.8); + } + + .wp-block-cover__inner-container h1 { + text-shadow: 0 0 20px rgba(255, 191, 0, 0.5); + } + + .wp-block-query .wp-block-post-template { + border-bottom: 1px solid #222; + padding-bottom: 20px; + margin-bottom: 20px; + } + + footer { border-top: 1px solid #222; padding-top: 40px; opacity: 0.8; } '; }); diff --git a/wp-content/plugins/bro-hangs/bro-hangs.php b/wp-content/plugins/bro-hangs/bro-hangs.php new file mode 100644 index 0000000..bc17923 --- /dev/null +++ b/wp-content/plugins/bro-hangs/bro-hangs.php @@ -0,0 +1,151 @@ + 'Hangouts', + 'singular_name' => 'Hangout', + 'menu_name' => 'Party Map', + 'add_new' => 'Add New Hangout', + 'add_new_item' => 'Add New Hangout', + 'edit_item' => 'Edit Hangout', + 'new_item' => 'New Hangout', + 'view_item' => 'View Hangout', + 'search_items' => 'Search Hangouts', + 'not_found' => 'No hangouts found', + ); + $args = array( + 'labels' => $labels, + 'public' => true, + 'has_archive' => true, + 'menu_icon' => 'dashicons-location-alt', + 'supports' => array('title', 'editor', 'thumbnail'), + 'show_in_rest' => true, + ); + register_post_type('bro_hangout', $args); +} + +// Add Meta Boxes for Latitude and Longitude +add_action('add_meta_boxes', 'bro_add_hangout_meta_boxes'); +function bro_add_hangout_meta_boxes() { + add_meta_box('bro_hangout_location', 'Hangout Location', 'bro_hangout_location_callback', 'bro_hangout', 'normal', 'high'); +} + +function bro_hangout_location_callback($post) { + $lat = get_post_meta($post->ID, '_bro_lat', true); + $lng = get_post_meta($post->ID, '_bro_lng', true); + wp_nonce_field('bro_hangout_save', 'bro_hangout_nonce'); + ?> +

+ + +

+

+ + +

+

Pro tip: Use Google Maps or similar to get coordinates. (e.g. 40.7128, -74.0060)

+ +
+ + + +
+
+

The Ultimate Bro Quiz

+

Determine your true beer destiny. Are you a Stout Sentinel or a Lager Legend?

+ +
+ + +
+ + +