WordPress MCP Adapter: πώς οι Abilities γίνονται MCP εργαλεία για AI agents
Αν έχεις πιάσει τον εαυτό σου να σκέφτεται «θα ήταν τέλειο αν ένα AI εργαλείο μπορούσε να τραβήξει με ασφάλεια δεδομένα από το WordPress μου και να εκτελέσει συγκεκριμένες εργασίες», πλέον υπάρχει ένας πολύ καθαρός τρόπος να το κάνεις, χωρίς ad-hoc endpoints και χωρίς ασαφείς εντολές.
Η βάση είναι το Abilities API (WordPress 6.9): ένας τυποποιημένος, discoverable και εκτελέσιμος τρόπος να δηλώνεις λειτουργικότητα. Πάνω σε αυτό κουμπώνει το WordPress MCP Adapter, που φέρνει το Model Context Protocol (MCP) μέσα στο scope ενός WordPress site, ώστε AI agents να μπορούν να ανακαλύπτουν και να καλούν Abilities ως MCP tools ή να διαβάζουν δεδομένα ως MCP resources.
Γρήγορη υπενθύμιση: γιατί τα Abilities είναι το θεμέλιο
Το Abilities API δίνει στο WordPress ένα first-class, cross-context functional API: έναν ενιαίο τρόπο ώστε core και plugins να εκθέτουν με συνέπεια το «τι κάνουν». Η ίδια Ability είναι προσβάσιμη και εκτελέσιμη από PHP, JavaScript και REST API.
Μια Ability ορίζεται μία φορά και περιλαμβάνει:
- Ένα μοναδικό όνομα τύπου
namespace/ability-name. - Typed input schema και output schema (συμβόλαιο εισόδου/εξόδου).
permission_callbackγια έλεγχο capabilities/δικαιωμάτων.execute_callbackπου κάνει την πραγματική δουλειά (fetch/update/diagnostics κ.λπ.).
Αυτό το μοντέλο είναι ιδανικό για AI αυτοματοποίηση, γιατί το AI δεν χρειάζεται να «μαντέψει» πώς να καλέσει κάτι: έχει τυποποίηση, ανακάλυψη (discovery) και σαφές execution path.
Στο WordPress 6.9 υπάρχουν τρεις default Core Abilities, που είναι χρήσιμες και ως testbed:
core/get-site-info: επιστρέφει site πληροφορίες όπως είναι ρυθμισμένες στο WordPress. By default επιστρέφει όλα τα πεδία, ή προαιρετικά φιλτραρισμένο subset.core/get-user-info: επιστρέφει βασικά στοιχεία προφίλ για τον τρέχοντα authenticated χρήστη (για personalization, auditing, access-aware συμπεριφορά).core/get-environment-info: επιστρέφει στοιχεία runtime περιβάλλοντος για diagnostics/compatibility (environment, PHP runtime, info DB server, WordPress version).
Τι είναι το WordPress MCP Adapter;
Το WordPress MCP Adapter είναι επίσημο package μέσα στο initiative AI Building Blocks for WordPress. Ο ρόλος του είναι να «μεταφράσει» τις Abilities που έχεις δηλώσει μέσω του Abilities API στα primitives που υποστηρίζει το Model Context Protocol (MCP), ώστε AI agents:
- να ανακαλύπτουν site λειτουργικότητα ως MCP tools (εκτελέσιμες λειτουργίες)
- να διαβάζουν WordPress δεδομένα ως MCP resources (παθητικές πηγές context)
Πρακτικά: αν ήδη έχεις plugin code που κάνει wp_register_ability(), είσαι ένα βήμα πριν το αξιοποιήσει ένας AI agent.
MCP primitives με μια ματιά: tools, resources, prompts
Το MCP οργανώνει την αλληλεπίδραση σε τρία βασικά primitives:
- Tools: εκτελέσιμες συναρτήσεις που καλεί το AI για να κάνει actions.
- Resources: παθητικές πηγές δεδομένων (π.χ. αρχεία, rows από DB) που διαβάζει το AI ως context.
- Prompts: προ-ρυθμισμένα templates/οδηγοί που κατευθύνουν συγκεκριμένα workflows.
Με το MCP Adapter, οι Abilities εκτίθενται συνήθως ως tools (γιατί είναι executable logic: fetch data, update posts, diagnostics). Όμως υπάρχει ευελιξία: αν μια Ability είναι read-only και ουσιαστικά «σερβίρει» δεδομένα (π.χ. static configuration ή ένα debug log), μπορεί να ρυθμιστεί και ως resource, ώστε το AI να το «απορροφήσει» ως background context χωρίς να το καλεί κάθε φορά ως action.
Εγκατάσταση του MCP Adapter (ως plugin) και τι ενεργοποιεί αυτόματα
Ο πιο γρήγορος τρόπος να ξεκινήσεις είναι να κατεβάσεις και να εγκαταστήσεις το MCP Adapter ως plugin από το GitHub Releases page:
https://github.com/WordPress/mcp-adapter/releases
Με την εγκατάσταση και ενεργοποίηση:
- Δημιουργείται ένα default MCP server με όνομα
mcp-adapter-default-server. - Δηλώνονται τρεις custom abilities:
mcp-adapter/discover-abilities,mcp-adapter/get-ability-info,mcp-adapter/execute-ability. - Αυτές οι abilities εκτίθενται αυτόματα ως MCP tools:
mcp-adapter-discover-abilities,mcp-adapter-get-ability-info,mcp-adapter-execute-ability.
Τα τρία αυτά tools δίνουν στους agents ένα «layered» μοτίβο πρόσβασης σε Abilities: πρώτα discover τι υπάρχει, μετά get λεπτομέρειες/σχήματα, και στο τέλος execute.
Πώς «ανοίγεις» Abilities στο default MCP server: meta.mcp.public
Στο default MCP server, οι Abilities δεν είναι διαθέσιμες από μόνες τους. Για να φανούν/εκτελεστούν μέσω του mcp-adapter-default-server, πρέπει να τις σημειώσεις ως public για MCP πρόσβαση, προσθέτοντας flag meta.mcp.public στα args του wp_register_ability().
'meta' => array(
'mcp' => array(
'public' => true, // Required for MCP default server access
),
)Για Core Abilities (ή abilities τρίτων που θέλεις να «πειράξεις» κατά την εγγραφή), μπορείς να χρησιμοποιήσεις το filter wp_register_ability_args και να εμπλουτίσεις τα arguments με το flag.
<?php
/**
* Plugin Name: Enable core abilities
* Version: 1.0.0
*
* @package enable-core-abilities
*/
add_filter( 'wp_register_ability_args', 'myplugin_enable_core_abilities_mcp_access', 10, 2 );
/**
* Enable MCP access for core abilities.
*
* @param array $args Ability registration arguments.
* @param string $ability_name Ability ID.
* @return array Modified ability registration arguments.
*/
function myplugin_enable_core_abilities_mcp_access( array $args, string $ability_name ) {
// Enable MCP access for the three current core abilities.
$core_abilities = array(
'core/get-site-info',
'core/get-user-info',
'core/get-environment-info',
);
if ( in_array( $ability_name, $core_abilities, true ) ) {
$args['meta']['mcp']['public'] = true;
}
return $args;
}
Με αυτό, μπορείς να συνδέσεις AI client στο WordPress σου και να καλέσεις αυτές τις Core Abilities μέσω των MCP tools του default server.
Σύνδεση AI εφαρμογών: transports (STDIO vs HTTP) και ελάχιστα configs
Για να μιλήσει ένα MCP-aware AI client με ένα WordPress site που λειτουργεί ως MCP server, υπάρχουν δύο transports: STDIO και HTTP. Η επιλογή εξαρτάται κυρίως από το πού «τρέχει» το WordPress.
STDIO transport (ιδανικό για local dev) μέσω WP-CLI
Σε τοπικά περιβάλλοντα ανάπτυξης WordPress, το πιο ευθύ path είναι το STDIO. Ο MCP Adapter το υποστηρίζει μέσω WP-CLI, άρα χρειάζεσαι εγκατεστημένο WP-CLI locally.
Minimal config για STDIO:
{
"wordpress-mcp-server": {
"command": "wp",
"args": [
"--path=/path/to/your/wordpress/installation",
"mcp-adapter",
"serve",
"--server=mcp-adapter-default-server",
"--user={admin_user}"
]
}
}
Σημεία που αξίζει να προσέξεις:
- Το
wordpress-mcp-serverείναι απλώς ένα όνομα/identifier μέσα στο config (το ορίζεις εσύ). - Το
commandείναιwp(WP-CLI). - Στα
args:--pathδείχνει στο WordPress installation,mcp-adapter serveξεκινά τον server,--serverεπιλέγει ποιο MCP server θα τρέξει (εδώ το default), και--userδηλώνει ποιος WordPress user θα χρησιμοποιηθεί για authentication.
HTTP transport (για public installs ή όταν δεν θες STDIO) με remote proxy
Για publicly accessible WordPress installs (ή όταν δεν θες STDIO), μπορείς να πας σε HTTP transport χρησιμοποιώντας το remote proxy @automattic/mcp-wordpress-remote.
Απαιτήσεις:
- Εγκατεστημένο Node.js στο μηχάνημά σου.
- Authentication είτε με WordPress application passwords είτε με custom OAuth implementation.
Minimal config για HTTP:
{
"wordpress-mcp-server": {
"command": "npx",
"args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
"env": {
"WP_API_URL": "https://yoursite.example/wp-json/mcp/mcp-adapter-default-server",
"WP_API_USERNAME": "{admin_user}",
"WP_API_PASSWORD": "{application-password}"
}
}
}
Τι σημαίνει κάθε πεδίο:
command: npxγια να εκτελέσεις Node.js packages.-yγια auto-accept στην εγκατάσταση.@automattic/mcp-wordpress-remote@latestγια να τρέξεις την τελευταία έκδοση του proxy.WP_API_URLδείχνει στο MCP endpoint του site σου.WP_API_USERNAMEείναι ο WordPress user.WP_API_PASSWORDείναι το application password του user.
Για local WordPress που συνδέεται μέσω HTTP remote proxy, υπάρχουν οδηγίες troubleshooting (συνήθως για πολλαπλές εκδόσεις Node.js ή local SSL certificates): https://github.com/Automattic/mcp-wordpress-remote/blob/trunk/Docs/troubleshooting.md
Ρυθμίσεις ανά εφαρμογή: Claude Desktop, Cursor, Claude Code, VS Code
Claude Desktop
Το Claude Desktop έχει built-in υποστήριξη για MCP servers. Για να προσθέσεις server, πας στο Developer tab (Claude → Settings → Developer) και στο section Local MCP servers επιλέγεις Edit config. Αυτό σε πάει στο claude_desktop_config.json όπου δηλώνεις MCP servers μέσα σε object mcpServers.
{
"mcpServers": {
}
}
Παράδειγμα STDIO transport:
{
"mcpServers": {
"wordpress-mcp-server": {
"command": "wp",
"args": [
"--path=/Users/jonathanbossenger/Studio/wordpress-mcp",
"mcp-adapter",
"serve",
"--server=mcp-adapter-default-server",
"--user=admin"
]
}
}
}
Παράδειγμα HTTP transport:
{
"mcpServers": {
"wordpress-mcp-server": {
"command": "npx",
"args": ["-y", "@automattic/mcp-wordpress-remote@latest"],
"env": {
"WP_API_URL": "http://localhost:8885/wp-json/mcp/mcp-adapter-default-server",
"WP_API_USERNAME": "admin",
"WP_API_PASSWORD": "2SEB qW5j D7CW fpsh pbmN RGva"
}
}
}
}
Σημαντικό: μετά το save, χρειάζεται restart το Claude Desktop γιατί διαβάζει MCP configs μόνο στο startup. Όταν όλα είναι σωστά, θα βλέπεις τον server στο Developer tab και status running.

Cursor
Στο Cursor πας Settings (Cursor → Settings → Cursor Settings) και ανοίγεις το section Tools and MCP. Εκεί υπάρχει το κουμπί Add Custom MCP που ανοίγει το mcp.json.
Το format του config είναι το ίδιο με Claude Desktop. Αφού προσθέσεις server, σώζεις και επιστρέφεις στο Tools and MCP, όπου θα εμφανιστεί ο server και μπορείς να τον ενεργοποιήσεις για τα coding sessions.

Claude Code
Στο Claude Code μπορείς να δηλώσεις MCP servers είτε:
- στο
.claude.jsonστο home directory (global, για όλα τα projects) - ή σε
.mcp.jsonμέσα στο project directory (project-specific configs)
Και στις δύο περιπτώσεις, χρησιμοποιείς το ίδιο format config όπως σε Cursor/Claude Desktop.
VS Code
Στο VS Code η σύνδεση γίνεται μέσω JSON config (συνήθως mcp.json) μέσα σε .vscode directory στο workspace. Η βασική διαφορά είναι ότι οι servers δηλώνονται σε object servers (όχι mcpServers). Τα υπόλοιπα είναι ίδια.
{
"servers": {
// MCP server definitions go here
}
}
Όταν υπάρχει το αρχείο, το VS Code εμφανίζει MCP control toolbar για start/stop/restart του server. Όταν ξεκινήσει σωστά, δείχνει και πόσα tools είναι διαθέσιμα (π.χ. 3 στο default setup).

Χρήση MCP tools στην πράξη (τι κάνει ο agent)
Αφού συνδέσεις τον MCP server στο AI app σου, μπορείς να ζητήσεις κάτι όπως «φέρε μου το site info από το WordPress». Σε ένα περιβάλλον όπως το Claude Desktop, ο agent συνήθως ακολουθεί αυτή τη ροή:
- Καλεί το
mcp-adapter-discover-abilitiesγια να δει ποιες Abilities είναι διαθέσιμες. - Αποφασίζει ποια Ability καλύπτει το request (π.χ.
core/get-site-info). - Καλεί το
mcp-adapter-execute-abilityπερνώντας ως παράμετρο το όνομα της Ability. - Παίρνει ως αποτέλεσμα τα site info δεδομένα και απαντά με βάση αυτά.

Custom MCP servers μέσα σε plugins: όταν θες απόλυτο έλεγχο
Το default MCP server καλύπτει συχνά τα περισσότερα σενάρια. Όμως αν φτιάχνεις plugin και θέλεις πιο αυστηρό έλεγχο στο ποια abilities εκτίθενται, με ποια transports/handlers και με ξεχωριστό REST namespace, τότε δημιουργείς custom MCP server.
Για αυτό το flow, εγκαθιστάς το MCP Adapter ως dependency μέσω Composer.
composer require wordpress/mcp-adapter
Μετά φορτώνεις τον Composer autoloader στο main plugin file:
if ( file_exists( __DIR__ . '/vendor/autoload.php' ) ) {
require_once __DIR__ . '/vendor/autoload.php';
}
Σε sites όπου είναι πιθανό πολλά plugins να εξαρτώνται από MCP Adapter ή Abilities API, συνιστάται χρήση Jetpack Autoloader για αποφυγή version conflicts: https://github.com/WordPress/mcp-adapter/blob/trunk/docs/getting-started/installation.md#using-jetpack-autoloader-highly-recommended
Έπειτα, αρχικοποιείς το MCP Adapter:
if ( ! class_exists( WPMCPCoreMcpAdapter::class ) ) {
// check if the MCP Adapter class is available, if not show some sort of error or admin notice
return;
}
// Initialize MCP Adapter and its default server.
WPMCPCoreMcpAdapter::instance();
Και τέλος δημιουργείς custom server στο mcp_adapter_init action. Η callback λαμβάνει την instance του adapter και καλείς create_server() με την επιθυμητή ρύθμιση.
add_action( 'mcp_adapter_init', 'myplugin_create_custom_mcp_server' );
function myplugin_create_custom_mcp_server( $adapter ) {
$adapter = WPMCPCoreMcpAdapter::instance();
$adapter->create_server(
'custom-mcp-server', // Unique server identifier.
'custom-mcp-server', // REST API namespace.
'mcp', // REST API route.
'Custom MCP Server', // Server name.
'Custom MCP Server', // Server description.
'v1.0.0', // Server version.
array( // Transport methods.
WPMCPTransportHttpTransport::class, // Recommended: MCP 2025-06-18 compliant.
),
WPMCPInfrastructureErrorHandlingErrorLogMcpErrorHandler::class, // Error handler.
WPMCPInfrastructureObservabilityNullMcpObservabilityHandler::class, // Observability handler.
array( 'namespace/ability-name' ), // Abilities to expose as tools
array(), // Resources (optional).
array(), // Prompts (optional).
);
}
Σημαντικά parameters εδώ:
- 1ο: unique server identifier (χρησιμοποιείται όταν ξεκινάς server via WP-CLI).
- 2ο + 3ο: REST API namespace και route για τον MCP server.
- 4ο + 5ο: server name και description (ό,τι εμφανίζουν οι AI εφαρμογές όταν listάρουν MCP servers).
- 6ο: server version.
- 10ο: array με ability names που θέλεις να εκθέσεις ως MCP tools (μπορεί να είναι πολλά).
- Τα υπόλοιπα: transports, error handling, observability handlers. Στο παράδειγμα χρησιμοποιούνται οι built-in handlers (HTTP transport, error logging, null observability), αλλά μπορείς να φτιάξεις δικούς σου αν θες integration με δικό σου logging/monitoring stack.
Παράδειγμα ολοκληρωμένο: προσθήκη custom MCP server στο “List All URLs”
Για ένα χειροπιαστό παράδειγμα, πάρε το plugin List All URLs (εκείνο που χρησιμοποιείται ως παράδειγμα με Abilities) και πρόσθεσε custom MCP server που εκθέτει μόνο την ability list-all-urls/urls.
Repo: https://github.com/wptrainingteam/list-all-urls
Πρώτα απενεργοποίησε το MCP Adapter plugin αν το έχεις ενεργό (ώστε να δουλέψεις καθαρά μέσα από plugin-dependency setup). Μετά, μέσα στο wp-content/plugins:
cd wp-content/plugins
git clone git@github.com:wptrainingteam/list-all-urls.git
Κάνε checkout στο branch που περιέχει την Abilities API υλοποίηση:
cd list-all-urls
git checkout abilities
Το plugin χρησιμοποιεί Composer, άρα εγκαθιστάς deps:
composer install
Και προσθέτεις το mcp-adapter package:
composer require wordpress/mcp-adapter
Έπειτα ανοίγεις το main file list-all-urls.php και στο τέλος προσθέτεις init + custom server:
if ( ! class_exists( WPMCPCoreMcpAdapter::class ) ) {
return;
}
// Initialize MCP Adapter and its default server.
WPMCPCoreMcpAdapter::instance();
add_action( 'mcp_adapter_init', 'list_all_urls_create_custom_mcp_server' );
/**
* Create a custom MCP server for the List All URLs plugin.
*
* @param object $adapter WPMCPCoreMcpAdapter The MCP Adapter instance.
* @return void
*/
function list_all_urls_create_custom_mcp_server( $adapter ) {
$adapter = WPMCPCoreMcpAdapter::instance();
$adapter->create_server(
'list-all-urls-mcp-server',
'list-all-urls-mcp-server',
'mcp',
'List All URLS MCP Server',
'Custom MCP Server for the List All URLs plugin. Currently exposes only the list-all-urls/urls ability as an MCP Tool.',
'v1.0.0',
array(
WPMCPTransportHttpTransport::class,
),
WPMCPInfrastructureErrorHandlingErrorLogMcpErrorHandler::class,
WPMCPInfrastructureObservabilityNullMcpObservabilityHandler::class,
array( 'list-all-urls/urls' ),
);
}
Κλειδί: εδώ δεν χρειάζεται να βάλεις meta.mcp.public για την list-all-urls/urls, γιατί την εκθέτεις ρητά μέσω του custom MCP server.
Μετά ενεργοποιείς το plugin από το wp-admin και ενημερώνεις το MCP config στο AI app σου ώστε να χρησιμοποιεί το νέο server.
Παράδειγμα VS Code mcp.json που έχει και τον default server και τον custom server, και οι δύο με STDIO transport:
{
"servers": {
"wordpress-mcp-server": {
"command": "wp",
"args": [
"--path=/Users/jonathanbossenger/Studio/wordpress-mcp",
"mcp-adapter",
"serve",
"--server=mcp-adapter-default-server",
"--user=admin"
]
},
"list-all-urls-mcp-server": {
"command": "wp",
"args": [
"--path=/Users/jonathanbossenger/Studio/wordpress-mcp",
"mcp-adapter",
"serve",
"--server=list-all-urls-mcp-server",
"--user=admin"
]
}
}
}
Μπορείς να έχεις πολλαπλούς MCP servers στο ίδιο AI app, είτε για διαφορετικά sites είτε για διαφορετικά plugins/abilities. Μετά την αλλαγή, κάνεις restart την εφαρμογή ή start/restart τον server μέσα από το UI (ανάλογα το client). Τότε μπορείς να ζητήσεις «List all URLs on my WordPress site» και ο agent θα καλέσει το list-all-urls-urls tool μέσω MCP Adapter.

Security & best practices: αντιμετώπισέ το σαν επιφάνεια εφαρμογής
Τα MCP clients λειτουργούν ουσιαστικά ως logged-in WordPress users. Άρα ό,τι εκθέτεις μέσω MCP είναι μέρος της επιφάνειας της εφαρμογής σου. Τα βασικά που αξίζει να τηρείς:
- Χρησιμοποίησε προσεκτικά το
permission_callback: κάθε ability να ελέγχει το ελάχιστο capability που απαιτείται (manage_options,edit_postsκ.λπ.). Απόφυγε__return_trueσε destructive operations όπως deletes. - Χρησιμοποίησε dedicated users για MCP access: ειδικά σε production, φτιάξε ξεχωριστό user/role με περιορισμένα δικαιώματα. Μην εκθέτεις «δυνατές» abilities σε AI clients που δεν έχεις ελέγξει/αξιολογήσει.
- Προτίμησε read-only abilities για public MCP endpoints: ειδικά σε HTTP transport που είναι εκτεθειμένο στο internet, ξεκίνα με read-only diagnostics, reporting, content access.
- Αν χρειάζεται, υλοποίησε custom authentication: by default μιλάμε για application passwords, αλλά μπορείς να πας σε OAuth ή άλλες μεθόδους για καλύτερο security posture.
- Παρακολούθησε και κατέγραψε χρήση: με custom error/observability handlers μπορείς να συνδέσεις το MCP layer με το logging/monitoring stack σου.
Πώς να ξεκινήσεις να πειραματίζεσαι σήμερα (minimal “hello AI” path)
Για έναν WordPress developer, το minimal path για να δεις αποτέλεσμα είναι:
- Δήλωσε μια Ability (με σωστό input/output schema,
permission_callback,execute_callback). - Κάνε require + init το MCP Adapter (plugin ή Composer ανάλογα το σενάριο).
- Σύνδεσε έναν MCP-aware client (Claude Desktop, Cursor, VS Code, Claude Code) μέσω STDIO ή HTTP.
- Ξεκίνα με λίγες, μη καταστροφικές, read-only abilities ως MCP tools και δοκίμασε local.
Αν έχεις ήδη plugins που χρησιμοποιούν Abilities API, το MCP Adapter ουσιαστικά τα μετατρέπει σε AI-ready APIs με ελάχιστη πρόσθετη δουλειά. Και σε επίπεδο καθημερινής ανάπτυξης, αυτό ανοίγει τον δρόμο για AI-assisted admin εργαλεία, αυτοματισμούς και workflows τόσο για πελάτες όσο και για ομάδες.
Τεκμηρίωση που θα σου χρειαστεί άμεσα
Abilities API: https://developer.wordpress.org/apis/abilities/ MCP Adapter repo: https://github.com/WordPress/mcp-adapter MCP intro: https://modelcontextprotocol.io/docs/getting-started/intro AI Building Blocks for WordPress: https://make.wordpress.org/ai/2025/07/17/ai-building-blocks/
Αναφορές / Πηγές
- From Abilities to AI Agents: Introducing the WordPress MCP Adapter
- Abilities API in WordPress 6.9
- Introducing the WordPress Abilities API
- Model Context Protocol (MCP) Introduction
- Model Context Protocol architecture: primitives
- Model Context Protocol architecture: transport layer
- MCP Adapter (Make WordPress AI)
- AI Building Blocks for WordPress
- MCP Adapter releases
- @automattic/mcp-wordpress-remote
- mcp-wordpress-remote troubleshooting
- WordPress application passwords integration guide
- MCP servers in VS Code (Copilot customization)
- Using Jetpack Autoloader (highly recommended)
- List All URLs plugin
- Build MCP Tools like Ogres with Layers
- Connect AI agents to WordPress (OAuth 2.1)
Νίκος Αντωνίου
Μέντορας του μεσογειακού οικοσυστήματος startups και τεχνολογικός σύμβουλος. Ειδικός στην ελληνική και κυπριακή τεχνολογική σκηνή. Η τοπική καινοτομία έχει παγκόσμιο αντίκτυπο.
Όλες οι αναρτήσειςΠερισσότερα από Νίκος Αντωνίου
SMTP ports το 2026: ποια θύρα να διαλέξεις για αξιόπιστα email από WordPress
Κρίσιμο κενό ασφαλείας στο WPvivid Backup: unauthenticated arbitrary file upload με πιθανό πλήρες takeover σε sites με ενεργό “send backup to site” key
GDPR compliance checklist για ιδιοκτήτες sites: πρακτικός οδηγός από το μηδέν