{"id":144,"date":"2026-01-21T07:21:49","date_gmt":"2026-01-21T06:21:49","guid":{"rendered":"https:\/\/helloblog.io\/sk\/wp-cli-pre-wordfence-abilities-api-bezpecnost-z-terminalu-aj-pre-ai-agentov\/"},"modified":"2026-01-21T07:36:41","modified_gmt":"2026-01-21T06:36:41","slug":"wp-cli-pre-wordfence-abilities-api-bezpecnost-z-terminalu-aj-pre-ai-agentov","status":"publish","type":"post","link":"https:\/\/helloblog.io\/sk\/wp-cli-pre-wordfence-abilities-api-bezpecnost-z-terminalu-aj-pre-ai-agentov\/","title":{"rendered":"WP-CLI pre Wordfence + Abilities API: bezpe\u010dnos\u0165 WordPressu z termin\u00e1lu aj pre AI agentov"},"content":{"rendered":"\n<p>Wordfence Security patr\u00ed medzi najpou\u017e\u00edvanej\u0161ie bezpe\u010dnostn\u00e9 pluginy vo WordPress ekosyst\u00e9me. Len\u017ee ke\u010f rie\u0161i\u0161 viac webov naraz, alebo m\u00e1\u0161 r\u00e1d automatiz\u00e1ciu, klasick\u00e9 preklik\u00e1vanie sa v admin dashboarde je sk\u00f4r brzda ne\u017e pomoc. Pr\u00e1ve tu d\u00e1va zmysel nov\u00fd open-source plugin <strong>WP-CLI for Wordfence<\/strong> (repo: <a href=\"https:\/\/github.com\/trueqap\/wpcli-for-wordfence\">github.com\/trueqap\/wpcli-for-wordfence<\/a>), ktor\u00fd prid\u00e1va Wordfence oper\u00e1cie do termin\u00e1lu cez <strong>WP-CLI<\/strong> (ofici\u00e1lne CLI rozhranie pre WordPress).<\/p>\n\n\n\n<p>Zauj\u00edmav\u00e9 je, \u017ee nejde len o \u010fal\u0161\u00ed set pr\u00edkazov. Plugin patr\u00ed medzi prv\u00e9, ktor\u00e9 implementuj\u00fa <strong>WordPress Abilities API<\/strong> predstaven\u00e9 vo WordPress 6.9. To znamen\u00e1, \u017ee Wordfence funkcie vie spr\u00edstupni\u0165 aj automatiza\u010dn\u00fdm n\u00e1strojom a AI agentom cez \u0161tandardizovan\u00e9, \u201esamopopisn\u00e9\u201c rozhranie.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">\u010co plugin prid\u00e1va: nov\u00fd WP-CLI namespace <code>wp wfsec<\/code><\/h2>\n\n\n\n<p>Po aktiv\u00e1cii doplnku pribudne do WP-CLI nov\u00fd namespace <strong><code>wfsec<\/code><\/strong>. Prakticky to znamen\u00e1, \u017ee bezpe\u010dnostn\u00e9 \u00falohy okolo Wordfence vie\u0161 rie\u0161i\u0165 cez pr\u00edkazy typu <code>wp wfsec ...<\/code> \u2013 bez toho, aby si otv\u00e1ral wp-admin.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security Scanning (skenovanie)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Spustenie r\u00fdchleho alebo pln\u00e9ho malware skenu<\/li>\n\n\n<li>Monitorovanie priebehu skenu v re\u00e1lnom \u010dase<\/li>\n\n\n<li>Zobrazenie hist\u00f3rie skenov a detailn\u00fdch logov<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Firewall Management (spr\u00e1va firewallu \/ WAF)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Blokovanie alebo odblokovanie IP adries<\/li>\n\n\n<li>Nastavenie trvania blok\u00e1cie a d\u00f4vodu (reason)<\/li>\n\n\n<li>Overenie, \u010di je konkr\u00e9tna IP zablokovan\u00e1<\/li>\n\n\n<li>Zapnutie alebo vypnutie WAF ochrany (Web Application Firewall)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Issue Tracking (n\u00e1lezy a hrozby)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>V\u00fdpis v\u0161etk\u00fdch detegovan\u00fdch bezpe\u010dnostn\u00fdch probl\u00e9mov<\/li>\n\n\n<li>Filtrovanie pod\u013ea statusu (new, ignored, resolved)<\/li>\n\n\n<li>Mazanie alebo spr\u00e1va jednotliv\u00fdch hrozieb<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Configuration (konfigur\u00e1cia Wordfence)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>\u010c\u00edtanie a zapisovanie Wordfence nastaven\u00ed<\/li>\n\n\n<li>Kontrola stavu licencie<\/li>\n\n\n<li>Export a import konfigur\u00e1cie<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">R\u00fdchle uk\u00e1\u017eky: pr\u00edkazy, ktor\u00e9 vyu\u017eije\u0161 hne\u010f<\/h2>\n\n\n\n<p>Toto s\u00fa praktick\u00e9 pr\u00edkazy, ktor\u00e9 vedia nahradi\u0165 be\u017en\u00e9 klikacie scen\u00e1re v administr\u00e1cii. Hod\u00ed sa to aj do skriptov, cronov, CI pipeline alebo pri spr\u00e1ve viacer\u00fdch in\u0161tanci\u00ed.<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#24292e\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" style=\"color:#e1e4e8;display:none\" aria-label=\"Copy\" class=\"code-block-pro-copy-button\"><pre class=\"code-block-pro-copy-button-pre\" aria-hidden=\"true\"><textarea class=\"code-block-pro-copy-button-textarea\" tabindex=\"-1\" aria-hidden=\"true\" readonly># Check overall Wordfence status\nwp wfsec status\n\n# Start a full security scan\nwp wfsec scan start --type=full\n\n# Watch scan progress\nwp wfsec scan status\n\n# List all security issues\nwp wfsec issues ls --status=all\n\n# Block an IP address for 24 hours\nwp wfsec firewall block 192.168.1.100 --duration=86400 --reason=&quot;Brute force attempt&quot;\n\n# Check license status\nwp wfsec license status\n\n<\/textarea><\/pre><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki github-dark\" style=\"background-color:#24292e;color:#e1e4e8\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color:#6A737D\"># Check overall Wordfence status<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">wp<\/span><span style=\"color:#9ECBFF\"> wfsec<\/span><span style=\"color:#9ECBFF\"> status<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># Start a full security scan<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">wp<\/span><span style=\"color:#9ECBFF\"> wfsec<\/span><span style=\"color:#9ECBFF\"> scan<\/span><span style=\"color:#9ECBFF\"> start<\/span><span style=\"color:#79B8FF\"> --type=full<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># Watch scan progress<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">wp<\/span><span style=\"color:#9ECBFF\"> wfsec<\/span><span style=\"color:#9ECBFF\"> scan<\/span><span style=\"color:#9ECBFF\"> status<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># List all security issues<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">wp<\/span><span style=\"color:#9ECBFF\"> wfsec<\/span><span style=\"color:#9ECBFF\"> issues<\/span><span style=\"color:#9ECBFF\"> ls<\/span><span style=\"color:#79B8FF\"> --status=all<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># Block an IP address for 24 hours<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">wp<\/span><span style=\"color:#9ECBFF\"> wfsec<\/span><span style=\"color:#9ECBFF\"> firewall<\/span><span style=\"color:#9ECBFF\"> block<\/span><span style=\"color:#79B8FF\"> 192.168.1.100<\/span><span style=\"color:#79B8FF\"> --duration=86400<\/span><span style=\"color:#79B8FF\"> --reason=<\/span><span style=\"color:#9ECBFF\">\"Brute force attempt\"<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color:#6A737D\"># Check license status<\/span><\/span>\n<span class=\"line\"><span style=\"color:#B392F0\">wp<\/span><span style=\"color:#9ECBFF\"> wfsec<\/span><span style=\"color:#9ECBFF\"> license<\/span><span style=\"color:#9ECBFF\"> status<\/span><\/span>\n<span class=\"line\"><\/span><\/code><\/pre><\/div>\n\n\n\n<p>D\u00f4le\u017eit\u00fd detail pre automatiz\u00e1ciu: pr\u00edkazy podporuj\u00fa parameter <strong><code>--format=json<\/code><\/strong>, tak\u017ee v\u00fdstup vie\u0161 \u013eahko spracova\u0165 v shell skriptoch, v Node\/PHP utilit\u00e1ch alebo v monitoringu.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Abilities API vo WordPress 6.9: pre\u010do je to z\u00e1sadn\u00e9<\/h2>\n\n\n\n<p><strong>WordPress Abilities API<\/strong> (novinka od WordPress 6.9) je \u0161tandardizovan\u00e9 rozhranie, v\u010faka ktor\u00e9mu m\u00f4\u017eu automatiza\u010dn\u00e9 n\u00e1stroje a AI agenti \u201eobjavova\u0165\u201c dostupn\u00e9 funkcie WordPressu a bezpe\u010dne ich vola\u0165 bez toho, aby si pre ka\u017ed\u00fa integr\u00e1ciu p\u00edsal vlastn\u00fd lepiaci k\u00f3d. Plugin pre Wordfence toto rozhranie implementuje a vystavuje oper\u00e1cie ako jasne definovan\u00e9 schopnosti (abilities), typicky so sch\u00e9mou\/valid\u00e1ciou.<\/p>\n\n\n\n<p>V praxi to otv\u00e1ra cestu k tomu, aby si Wordfence integroval do vlastn\u00fdch dashboardov, do automatizovan\u00fdch kontrol, alebo aby AI agent vedel bezpe\u010dnostn\u00e9 rutiny sp\u00fa\u0161\u0165a\u0165 a vyhodnocova\u0165 na z\u00e1klade jednotn\u00e9ho kontraktu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">7 schopnost\u00ed (abilities), ktor\u00e9 plugin vystavuje<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>scan-status<\/strong> \u2013 z\u00edskanie aktu\u00e1lneho stavu skenu a jeho progresu<\/li>\n\n\n<li><strong>scan-start<\/strong> \u2013 programov\u00e9 spustenie bezpe\u010dnostn\u00e9ho skenu<\/li>\n\n\n<li><strong>issues-list<\/strong> \u2013 na\u010d\u00edtanie zoznamu detegovan\u00fdch probl\u00e9mov<\/li>\n\n\n<li><strong>issues-count<\/strong> \u2013 po\u010dty n\u00e1lezov pod\u013ea z\u00e1va\u017enosti (severity)<\/li>\n\n\n<li><strong>firewall-status<\/strong> \u2013 kontrola stavu WAF<\/li>\n\n\n<li><strong>firewall-block<\/strong> \u2013 blokovanie IP cez API<\/li>\n\n\n<li><strong>license-status<\/strong> \u2013 dotaz na licen\u010dn\u00e9 inform\u00e1cie<\/li>\n\n<\/ul>\n\n\n\n<p>Ke\u010f to spoj\u00ed\u0161 s <code>--format=json<\/code> na CLI strane, dostane\u0161 dve ve\u013emi pou\u017eite\u013en\u00e9 vrstvy: <strong>WP-CLI pre admin\/scripting<\/strong> a <strong>Abilities API pre agentov a extern\u00e9 automatiz\u00e1cie<\/strong>.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Autentifik\u00e1cia: Application Passwords + Basic Auth<\/h3>\n\n\n\n<p>Autentifik\u00e1cia je postaven\u00e1 na <strong>WordPress Application Passwords<\/strong> (aplik\u00e1\u010dn\u00e9 hesl\u00e1) cez <strong>Basic Auth<\/strong>. In\u00fdmi slovami: pre pr\u00edstup n\u00e1stroja\/agenta vytvor\u00ed\u0161 aplik\u00e1\u010dn\u00e9 heslo pre konkr\u00e9tneho pou\u017e\u00edvate\u013ea a t\u00fdm vie\u0161 bezpe\u010dne autorizova\u0165 volania API bez zdie\u013eania prim\u00e1rneho hesla.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Po\u017eiadavky (requirements)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WordPress <strong>6.9+<\/strong><\/li>\n\n\n<li>PHP <strong>8.0+<\/strong><\/li>\n\n\n<li>WP-CLI <strong>2.5+<\/strong><\/li>\n\n\n<li>Plugin <strong>Wordfence Security<\/strong> (free alebo premium)<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">In\u0161tal\u00e1cia a stiahnutie<\/h2>\n\n\n\n<p>Najjednoduch\u0161ia cesta je stiahnu\u0165 ZIP release a nahra\u0165 ho do adres\u00e1ra <strong><code>\/wp-content\/plugins\/<\/code><\/strong> (n\u00e1sledne aktivova\u0165 v administr\u00e1cii). Repo pon\u00faka aj alternat\u00edvu cez <strong>Composer<\/strong> pre setupy typu Bedrock.<\/p>\n\n\n<a href=\"https:\/\/github.com\/trueqap\/wpcli-for-wordfence\/releases\/download\/v1.0.0\/wpcli-for-wordfence-1.0.0.zip\" class=\"download-card\" download>\n                <span class=\"download-icon\"><i class=\"fa-duotone fa-file-zipper\"><\/i><\/span>\n                <span class=\"download-info\">\n                    <span class=\"download-title\">Download WP CLI for Wordfence v1.0.0<\/span>\n                    <span class=\"download-meta\"><span class=\"download-filename\">wpcli-for-wordfence-1.0.0.zip<\/span><\/span>\n                <\/span>\n                <span class=\"download-action\"><i class=\"fa-duotone fa-arrow-down-to-line\"><\/i><\/span>\n            <\/a>\n\n\n<h2 class=\"wp-block-heading\">Zhrnutie: pre koho to d\u00e1va zmysel<\/h2>\n\n\n\n<p>Ak m\u00e1\u0161 na starosti viac WordPress in\u0161tal\u00e1ci\u00ed, rie\u0161i\u0161 incidenty pod \u010dasov\u00fdm tlakom alebo stavia\u0161 automatizovan\u00e9 bezpe\u010dnostn\u00e9 procesy, kombin\u00e1cia <strong><code>wp wfsec<\/code> pr\u00edkazov<\/strong> a podpory <strong>Abilities API<\/strong> je presne ten typ roz\u0161\u00edrenia, ktor\u00fd \u0161etr\u00ed \u010das. V termin\u00e1li spust\u00ed\u0161 sken, vyhodnot\u00ed\u0161 n\u00e1lezy, zablokuje\u0161 IP a z\u00e1rove\u0148 m\u00e1\u0161 otvoren\u00e9 dvere pre integr\u00e1ciu s AI\/automatiza\u010dn\u00fdmi n\u00e1strojmi cez \u0161tandardn\u00e9 rozhranie vo WordPress 6.9.<\/p>\n\n\n<div class=\"references-section\">\n                <h2>Referencie \/ Zdroje<\/h2>\n                <ul class=\"references-list\"><li><a href=\"https:\/\/github.com\/trueqap\/wpcli-for-wordfence\" target=\"_blank\" rel=\"noopener noreferrer\">WP-CLI &amp; Abilities API for Wordfence: Manage Security from Terminal and AI Agents<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Spravuje\u0161 viac WordPress webov a nechce\u0161 klika\u0165 v administr\u00e1cii? Tento open-source doplnok prid\u00e1va Wordfence ovl\u00e1danie do WP-CLI a z\u00e1rove\u0148 spr\u00edstup\u0148uje k\u013e\u00fa\u010dov\u00e9 bezpe\u010dnostn\u00e9 oper\u00e1cie cez nov\u00fd WordPress Abilities API vo WordPress 6.9.<\/p>\n","protected":false},"author":37,"featured_media":145,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[34,37,15,10,7],"class_list":["post-144","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-bezpecnost","tag-api","tag-bezpecnost","tag-wordfence","tag-wordpress","tag-wp-cli"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/posts\/144","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/users\/37"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/comments?post=144"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/posts\/144\/revisions"}],"predecessor-version":[{"id":146,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/posts\/144\/revisions\/146"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/media\/145"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/media?parent=144"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/categories?post=144"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/sk\/wp-json\/wp\/v2\/tags?post=144"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}