Skip to content

Commit feb58d2

Browse files
committed
feat: services fetched server-side + cached
1 parent 528a826 commit feb58d2

3 files changed

Lines changed: 56 additions & 11 deletions

File tree

wp-blocks/mcld-services/src/mcld-services/block.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,8 @@
1818
}
1919
},
2020
"textdomain": "mcld-services",
21+
"render": "file:./render.php",
2122
"editorScript": "file:./index.js",
2223
"editorStyle": "file:./index.css",
23-
"style": "file:./style-index.css",
24-
"viewScript": "file:./view.js"
24+
"style": "file:./style-index.css"
2525
}
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
<?php
2+
$api_url = isset($attributes['apiUrl']) ? $attributes['apiUrl'] : '';
3+
4+
if (empty($api_url)) { ?>
5+
<div <?= get_block_wrapper_attributes() ?>>
6+
<p><?= esc_html__('Set the Dashboard API URL in the block settings.', 'mcld-services') ?></p>
7+
</div>
8+
<?php return;
9+
}
10+
11+
$transient_key = 'mcld_services_' . md5($api_url);
12+
$services = get_transient($transient_key);
13+
14+
if (false === $services) {
15+
$response = wp_remote_get(rtrim($api_url, '/') . '/api/public/services');
16+
17+
if (is_wp_error($response) || 200 !== wp_remote_retrieve_response_code($response)) { ?>
18+
<div <?= get_block_wrapper_attributes() ?>>
19+
<p><?= esc_html__('Could not load services.', 'mcld-services') ?></p>
20+
</div>
21+
<?php return;
22+
}
23+
24+
$services = json_decode(wp_remote_retrieve_body($response), true);
25+
set_transient($transient_key, $services, 60);
26+
}
27+
28+
if (empty($services)) { ?>
29+
<div <?= get_block_wrapper_attributes() ?>>
30+
<p><?= esc_html__('No active services available.', 'mcld-services') ?></p>
31+
</div>
32+
<?php return;
33+
}
34+
?>
35+
36+
<div <?= get_block_wrapper_attributes() ?>>
37+
<div class="mcld-services-grid">
38+
<?php foreach ($services as $service): ?>
39+
<div class="mcld-service-card">
40+
<h3><?= esc_html($service['title'] ?? '') ?></h3>
41+
<?php if (!empty($service['description'])): ?>
42+
<p><?= esc_html($service['description']) ?></p>
43+
<?php endif; ?>
44+
<?php if (isset($service['priceCents']) && null !== $service['priceCents']): ?>
45+
<p class="mcld-service-price">
46+
<?= esc_html(number_format($service['priceCents'] / 100, 2) . ' ' . strtoupper($service['priceCurrency'] ?? '')) ?>
47+
</p>
48+
<?php endif; ?>
49+
</div>
50+
<?php endforeach; ?>
51+
</div>
52+
</div>
Lines changed: 2 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,3 @@
1-
import { useBlockProps } from '@wordpress/block-editor';
2-
3-
export default function save( { attributes } ) {
4-
const { apiUrl } = attributes;
5-
return (
6-
<div { ...useBlockProps.save() } data-api-url={ apiUrl }>
7-
Loading…
8-
</div>
9-
);
1+
export default function save() {
2+
return null;
103
}

0 commit comments

Comments
 (0)