{"id":171,"date":"2026-01-21T07:21:42","date_gmt":"2026-01-21T06:21:42","guid":{"rendered":"https:\/\/helloblog.io\/sl\/wp-cli-za-wordfence-abilities-api-varnost-terminal-ai-agenti\/"},"modified":"2026-01-21T07:36:51","modified_gmt":"2026-01-21T06:36:51","slug":"wp-cli-za-wordfence-abilities-api-varnost-terminal-ai-agenti","status":"publish","type":"post","link":"https:\/\/helloblog.io\/sl\/wp-cli-za-wordfence-abilities-api-varnost-terminal-ai-agenti\/","title":{"rendered":"WP-CLI za Wordfence + WordPress Abilities API: varnostni pregledi in firewall kar iz terminala (tudi za AI agente)"},"content":{"rendered":"\n<p>\u010ce upravlja\u0161 ve\u010d WordPress spletnih mest ali pa ti je terminal doma\u010d teren, je Wordfence v klasi\u010dni obliki pogosto nerodno orodje: skene, WAF nastavitve in upravljanje incidentov obi\u010dajno re\u0161uje\u0161 v administraciji. Zdaj je na voljo nov odprtokodni vti\u010dnik <strong>WP-CLI &#038; Abilities API for Wordfence<\/strong>, ki Wordfence Security pripelje v WP-CLI in hkrati podpira <strong>WordPress Abilities API<\/strong> (nov standard v WordPress 6.9).<\/p>\n\n\n\n<p>To pomeni dve stvari: (1) Wordfence lahko upravlja\u0161 z ukazi <code>wp wfsec ...<\/code> in ga la\u017eje vklju\u010di\u0161 v skripte, CI\/CD ali rutinske \u201crunbooke\u201d; (2) prek Abilities API dobi\u0161 standardiziran, samopopisni (self-describing) vmesnik, ki ga lahko uporabljajo avtomatizacijska orodja in AI agenti brez posebnega \u201ccustom\u201d integracijskega kodeksiranja za vsako funkcijo posebej.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Kaj to\u010dno doda vti\u010dnik: <code>wp wfsec<\/code> namespace v WP-CLI<\/h2>\n\n\n\n<p>Vti\u010dnik raz\u0161iri WP-CLI z novim ukaznim prostorom <code>wp wfsec<\/code>, ki pokrije glavne Wordfence operacije: od zagonov skenov in spremljanja napredka do upravljanja WAF (Web Application Firewall) in obravnave zaznanih te\u017eav.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security scanning (pregledi varnosti)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Zagon hitrega ali polnega malware\/security skena.<\/li>\n\n\n<li>Spremljanje napredka skena v realnem \u010dasu (status\/progress).<\/li>\n\n\n<li>Vpogled v zgodovino skenov in podrobne loge.<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Firewall management (upravljanje po\u017earnega zidu \/ WAF)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Blokiranje ali odblokiranje IP naslovov.<\/li>\n\n\n<li>Nastavitev trajanja blokade in razloga (uporabno za audit trail in kasnej\u0161o analizo).<\/li>\n\n\n<li>Preverjanje, ali je konkreten IP blokiran.<\/li>\n\n\n<li>Vklop ali izklop WAF za\u0161\u010dite.<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Issue tracking (upravljanje zaznanih te\u017eav)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Izpis vseh zaznanih varnostnih problemov (issues).<\/li>\n\n\n<li>Filtriranje po statusu (new, ignored, resolved).<\/li>\n\n\n<li>Brisanje ali upravljanje posameznih gro\u017eenj\/incidentov.<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Configuration (nastavitve in prenos konfiguracije)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Branje in spreminjanje Wordfence nastavitev (get\/set).<\/li>\n\n\n<li>Preverjanje statusa licence.<\/li>\n\n\n<li>Izvoz in uvoz konfiguracije (export\/import) za la\u017eje poenotenje nastavitev med okolji ali ve\u010d spletnimi mesti.<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Hitri primeri ukazov (copy\/paste ready)<\/h2>\n\n\n\n<p>Spodaj je nekaj tipi\u010dnih ukazov, ki jih bo\u0161 uporabljal pri dnevnih opravilih ali v avtomatizaciji. Gre za iste primere, kot jih navaja projekt, zato so dober \u201csmoke test\u201d, da vidi\u0161, ali je vse pravilno name\u0161\u010deno.<\/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<\/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><\/code><\/pre><\/div>\n\n\n\n<p>Pomemben detajl za skriptiranje: ukazi podpirajo tudi <code>--format=json<\/code>, kar je klju\u010dnega pomena, \u010de rezultate bere\u0161 v avtomatizacijskih opravilih (cron), CI jobih ali pa v lastnih \u201cops\u201d orodjih.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zakaj je Abilities API pomemben: Wordfence kot \u201corodje\u201d, ki ga AI lahko odkrije in uporablja<\/h2>\n\n\n\n<p>Najbolj zanimiv del tega vti\u010dnika je podpora za <strong>WordPress Abilities API<\/strong>. Gre za standardiziran vmesnik, uveden v <strong>WordPress 6.9<\/strong>, ki omogo\u010da, da orodja (vklju\u010dno z AI agenti) programati\u010dno odkrijejo, katere sposobnosti (abilities) ima WordPress namestitev, in jih kli\u010dejo prek validiranih shem, brez \u201chand-made\u201d integracij za vsak plugin posebej.<\/p>\n\n\n\n<p>V praksi to odpira precej konkretne scenarije: AI nadzor varnosti (npr. periodi\u010dno preverjanje stanja skena in issues), integracije v interne dashboarde, avtomatske rutine (npr. dnevni scan + poro\u010dilo) ali pa centralno upravljanje ve\u010d namestitev, kjer orodje samo \u201crazume\u201d, kaj lahko na ciljnem WordPressu naredi.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Sposobnosti (abilities), ki jih vti\u010dnik izpostavi<\/h3>\n\n\n\n<p>Projekt izpostavi sedem klju\u010dnih Wordfence \u201cabilities\u201d, ki pokrijejo osnovne varnostne operacije:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>scan-status<\/strong> \u2013 pridobi trenutno stanje skena in napredek.<\/li>\n\n\n<li><strong>scan-start<\/strong> \u2013 programati\u010dno spro\u017ei varnostni pregled.<\/li>\n\n\n<li><strong>issues-list<\/strong> \u2013 vrne seznam zaznanih varnostnih te\u017eav.<\/li>\n\n\n<li><strong>issues-count<\/strong> \u2013 vrne \u0161tevilo te\u017eav po resnosti (severity).<\/li>\n\n\n<li><strong>firewall-status<\/strong> \u2013 preveri stanje WAF.<\/li>\n\n\n<li><strong>firewall-block<\/strong> \u2013 blokira IP prek API.<\/li>\n\n\n<li><strong>license-status<\/strong> \u2013 pridobi informacije o licenci.<\/li>\n\n<\/ul>\n\n\n\n<p>Ker gre za samopopisni in s shemo validiran API, ga lahko AI agent ali avtomatizacijsko orodje \u201codkrije\u201d in uporablja brez posebne logike, ki bi bila pisana to\u010dno za Wordfence. To je velik korak v smeri standardizirane avtomatizacije na WordPressu.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Avtentikacija<\/h3>\n\n\n\n<p>Za avtentikacijo se uporablja <strong>WordPress Application Passwords<\/strong> prek <strong>Basic Auth<\/strong>. Application Passwords so v WordPressu namenjena varnemu dostopu aplikacij\/skript do wp-admin zmo\u017enosti brez deljenja glavnega gesla uporabnika, Basic Auth pa je transportni mehanizem (obi\u010dajno v kombinaciji s HTTPS).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Zahteve (requirements)<\/h2>\n\n\n\n<p>Da bo vse delovalo, mora okolje izpolnjevati naslednje pogoje:<\/p>\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>Name\u0161\u010den vti\u010dnik <strong>Wordfence Security<\/strong> (free ali premium)<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Namestitev: ZIP prenos ali Composer (Bedrock)<\/h2>\n\n\n\n<p>Najhitrej\u0161a pot je ro\u010dni prenos ZIP-a in upload v mapo <code>\/wp-content\/plugins\/<\/code>, nato aktivacija vti\u010dnika v WordPress administraciji (ali prek WP-CLI, \u010de ima\u0161 svoj standardni deployment). Projekt ponuja tudi mo\u017enost namestitve prek Composerja, \u010de uporablja\u0161 Bedrock-style strukturo (Composer-managed WordPress).<\/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\">Kako bi to uporabil v praksi (brez dodatnega \u201cover-engineeringa\u201d)<\/h2>\n\n\n\n<p>\u010ce \u017ee \u017eivi\u0161 v WP-CLI, je najve\u010dja prednost takoj\u0161nja: varnostne operacije postanejo del tvojih standardnih skript. Tipi\u010dni primer je, da na ve\u010d spletnih mestih spro\u017ei\u0161 polni scan, potem pa periodi\u010dno bere\u0161 <code>scan status<\/code> in ob zaklju\u010dku pobere\u0161 <code>issues<\/code> ter rezultate shrani\u0161 v centralni log ali monitoring.<\/p>\n\n\n\n<p>Abilities API pa naredi korak dlje: namesto da vsakokrat pi\u0161e\u0161 specializirane integracije za Wordfence, lahko gradi\u0161 orodja, ki delajo z \u201cabilities\u201d kot abstrakcijo. Ko se ekosistem raz\u0161iri, bo isti pristop deloval tudi za druge funkcije in vti\u010dnike, ki implementirajo Abilities API.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Povzetek<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Vti\u010dnik doda <strong><code>wp wfsec<\/code><\/strong> ukaze za Wordfence: skeni, WAF, issues, konfiguracija in licenca.<\/li>\n\n\n<li>Ukazi podpirajo <strong><code>--format=json<\/code><\/strong>, kar je prakti\u010dno za avtomatizacijo in skriptiranje.<\/li>\n\n\n<li>Implementira <strong>WordPress Abilities API (WP 6.9)<\/strong> in izpostavi 7 \u201cabilities\u201d (scan, issues, firewall, licenca).<\/li>\n\n\n<li>Avtentikacija temelji na <strong>WordPress Application Passwords<\/strong> prek <strong>Basic Auth<\/strong>.<\/li>\n\n\n<li>Zahteva WordPress 6.9+, PHP 8.0+, WP-CLI 2.5+ in name\u0161\u010den Wordfence (free ali premium).<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Reference \/ Viri<\/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>Wordfence je kon\u010dno uporaben tudi brez klikanja po wp-adminu: nov odprtokodni vti\u010dnik doda `wp wfsec` ukaze v WP-CLI in hkrati izpostavi Wordfence funkcije prek WordPress Abilities API za avtomatizacijo in AI agente.<\/p>\n","protected":false},"author":46,"featured_media":172,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[65,11,14,10,8],"class_list":["post-171","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-varnost","tag-avtomatizacija","tag-varnost","tag-wordfence","tag-wordpress","tag-wp-cli"],"_links":{"self":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts\/171","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/users\/46"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/comments?post=171"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts\/171\/revisions"}],"predecessor-version":[{"id":173,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/posts\/171\/revisions\/173"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/media\/172"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/media?parent=171"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/categories?post=171"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/sl\/wp-json\/wp\/v2\/tags?post=171"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}