// Yahweh Mission Dashboard Integration — WPCode snippet version // Paste this into a new PHP Snippet in WPCode, set to run "Auto Insert" / // "Everywhere", and activate it. Functionally identical to the plugin // version — just packaged as a snippet since this host strips .php files // out of uploaded plugin zips. if (!function_exists('ymi_get_api_url')) { function ymi_get_api_url() { return rtrim(get_option('ymi_dashboard_api_url', ''), '/'); } } // ---- Settings page: Settings -> Yahweh Mission ---- add_action('admin_menu', function () { add_options_page('Yahweh Mission Dashboard', 'Yahweh Mission', 'manage_options', 'yahweh-mission', 'ymi_render_settings_page'); }); add_action('admin_init', function () { register_setting('ymi_settings', 'ymi_dashboard_api_url', array( 'sanitize_callback' => 'esc_url_raw', 'default' => '', )); }); function ymi_render_settings_page() { if (!current_user_can('manage_options')) { return; } $api_url = get_option('ymi_dashboard_api_url', ''); ?>
Connects this site to the Yahweh Mission Dashboard so published children, gifts, and projects appear here automatically via the [ymi_children], [ymi_gift_catalog], and [ymi_child_profile] shortcodes.
Could not reach the dashboard: ' . esc_html($response->get_error_message()) . '
'; } elseif (wp_remote_retrieve_response_code($response) === 200) { echo 'Connected — the dashboard responded successfully.
'; } else { echo 'Dashboard responded with HTTP ' . esc_html(wp_remote_retrieve_response_code($response)) . '.
'; } ?>The Yahweh Mission Dashboard is not connected yet. Configure it in Settings.
'; } return ''; } } if (!function_exists('ymi_error_notice')) { function ymi_error_notice($error) { if (current_user_can('manage_options')) { return 'Could not load content from the dashboard: ' . esc_html($error->get_error_message()) . '
'; } return ''; } } // ---- [ymi_children] ---- add_shortcode('ymi_children', function ($atts) { $atts = shortcode_atts(array('limit' => 0), $atts, 'ymi_children'); $children = ymi_api_get('/api/children?gender=either&country=all&minAge=1&maxAge=22', 'ymi_children_all'); if (is_wp_error($children)) { return $children->get_error_code() === 'ymi_not_configured' ? ymi_not_configured_notice() : ymi_error_notice($children); } if ((int) $atts['limit'] > 0) { $children = array_slice($children, 0, (int) $atts['limit']); } if (empty($children)) { return 'No children are currently available for sponsorship.
'; } ob_start(); ?> ''), $atts, 'ymi_child_profile'); $id = !empty($atts['id']) ? $atts['id'] : (isset($_GET['ymi_child']) ? sanitize_text_field(wp_unslash($_GET['ymi_child'])) : ''); if (empty($id)) { return 'No child specified.
'; } $api_url = ymi_get_api_url(); if (empty($api_url)) { return ymi_not_configured_notice(); } $cache_key = 'ymi_child_' . md5($id); $child = get_transient($cache_key); if ($child === false) { $response = wp_remote_get($api_url . '/api/children/' . rawurlencode($id), array('timeout' => 10)); if (is_wp_error($response)) { return ymi_error_notice($response); } if (wp_remote_retrieve_response_code($response) !== 200) { return 'This child profile is no longer available.
'; } $child = json_decode(wp_remote_retrieve_body($response), true); set_transient($cache_key, $child, 300); } if (!is_array($child)) { return 'This child profile is no longer available.
'; } ob_start(); ?>already has a sponsor. Thank you!
No gifts are available right now.
'; } $api_url = ymi_get_api_url(); ob_start(); ?>Turpis nisl scelerisque hendrerit nulla laoreet. Morbi litora dapibus aptent massa laoreet at. Pede malesuada ultricies cursus a urna vehicula habitasse lacinia lectus dictum.Nullam erat neque duis aptent lacus consequat letius cubilia imperdiet vehicula etiam. Massa eu vitae aliquet leo montes sapien phasellus a mattis at faucibus.
Turpis nisl scelerisque hendrerit nulla laoreet. Morbi litora dapibus aptent massa laoreet at. Pede malesuada ultricies cursus a urna vehicula habitasse lacinia lectus dictum.Nullam erat neque duis aptent lacus consequat letius cubilia imperdiet vehicula etiam. Massa eu vitae aliquet leo montes sapien phasellus a mattis at faucibus.
Turpis nisl scelerisque hendrerit nulla laoreet. Morbi litora dapibus aptent massa laoreet at. Pede malesuada ultricies cursus a urna vehicula habitasse lacinia lectus dictum.Nullam erat neque duis aptent lacus consequat letius cubilia imperdiet vehicula etiam. Massa eu vitae aliquet leo montes sapien phasellus a mattis at faucibus.