{"id":121,"date":"2026-01-21T07:21:48","date_gmt":"2026-01-21T06:21:48","guid":{"rendered":"https:\/\/helloblog.io\/cs\/wordfence-wp-cli-abilities-api-wp-6-9\/"},"modified":"2026-01-21T07:36:38","modified_gmt":"2026-01-21T06:36:38","slug":"wordfence-wp-cli-abilities-api-wp-6-9","status":"publish","type":"post","link":"https:\/\/helloblog.io\/cs\/wordfence-wp-cli-abilities-api-wp-6-9\/","title":{"rendered":"Wordfence z termin\u00e1lu: WP-CLI p\u0159\u00edkazy a Abilities API (WP 6.9) pro automatizaci bezpe\u010dnosti"},"content":{"rendered":"\n<p>Wordfence pat\u0159\u00ed mezi nejpou\u017e\u00edvan\u011bj\u0161\u00ed bezpe\u010dnostn\u00ed pluginy pro WordPress, ale jeho ovl\u00e1d\u00e1n\u00ed je typicky nav\u00e1zan\u00e9 na wp\u2011admin. Kdy\u017e spravuje\u0161 flotilu web\u016f, b\u011b\u017e\u00ed\u0161 \u00fadr\u017ebu p\u0159es SSH nebo si stav\u00ed\u0161 automatizace kolem CI\/CD, za\u010dne ti UI rychle p\u0159ek\u00e1\u017eet.<\/p>\n\n\n\n<p>Na GitHubu se te\u010f objevil nov\u00fd open\u2011source plugin <strong>WP\u2011CLI &#038; Abilities API for Wordfence<\/strong>, kter\u00fd p\u0159esn\u011b tuhle mezeru \u0159e\u0161\u00ed: p\u0159id\u00e1v\u00e1 plnohodnotn\u00e9 ovl\u00e1d\u00e1n\u00ed Wordfence p\u0159es WP\u2011CLI (WordPress Command Line Interface) a nav\u00edc implementuje nov\u00fd <strong>WordPress Abilities API<\/strong> z WordPressu 6.9. To je zaj\u00edmav\u00e9 hlavn\u011b t\u00edm, \u017ee sjednocuje zp\u016fsob, jak mohou automatiza\u010dn\u00ed n\u00e1stroje a AI agenti \u201eobjevovat\u201c dostupn\u00e9 funkce WordPressu a bezpe\u010dn\u011b je volat p\u0159es popsan\u00e9, validovan\u00e9 rozhran\u00ed.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co plugin p\u0159id\u00e1v\u00e1: namespace <code>wp wfsec<\/code> pro Wordfence operace<\/h2>\n\n\n\n<p>Po instalaci z\u00edsk\u00e1\u0161 v WP\u2011CLI nov\u00fd p\u0159\u00edkazov\u00fd prostor <code>wfsec<\/code>. C\u00edlem je pokr\u00fdt b\u011b\u017en\u00e9 bezpe\u010dnostn\u00ed workflow bez nutnosti otev\u00edrat administraci \u2013 od sken\u016f a pr\u00e1ce s n\u00e1lezy a\u017e po pravidla firewallu a konfiguraci.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Security scanning (skenov\u00e1n\u00ed)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Spu\u0161t\u011bn\u00ed rychl\u00e9ho nebo pln\u00e9ho (full) malware skenu<\/li>\n\n\n<li>Sledov\u00e1n\u00ed pr\u016fb\u011bhu skenu v re\u00e1ln\u00e9m \u010dase<\/li>\n\n\n<li>Zobrazen\u00ed historie sken\u016f a detailn\u00edch log\u016f<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Firewall management (spr\u00e1va WAF a blokac\u00ed)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>Blokov\u00e1n\u00ed nebo odblokov\u00e1n\u00ed IP adres<\/li>\n\n\n<li>Nastaven\u00ed d\u00e9lky blokace a d\u016fvodu (reason)<\/li>\n\n\n<li>Ov\u011b\u0159en\u00ed, zda je konkr\u00e9tn\u00ed IP blokovan\u00e1<\/li>\n\n\n<li>Zapnut\u00ed nebo vypnut\u00ed WAF ochrany (Web Application Firewall)<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Issue tracking (pr\u00e1ce s n\u00e1lezy a hrozbami)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>V\u00fdpis v\u0161ech detekovan\u00fdch bezpe\u010dnostn\u00edch probl\u00e9m\u016f<\/li>\n\n\n<li>Filtrov\u00e1n\u00ed podle stavu (new, ignored, resolved)<\/li>\n\n\n<li>Maz\u00e1n\u00ed nebo spr\u00e1va jednotliv\u00fdch hrozeb<\/li>\n\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Configuration (konfigurace a licence)<\/h3>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>\u010cten\u00ed a zm\u011bna nastaven\u00ed Wordfence<\/li>\n\n\n<li>Kontrola stavu licence<\/li>\n\n\n<li>Export a import konfigurace<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Rychl\u00e9 uk\u00e1zky: p\u0159\u00edkazy, kter\u00e9 d\u00e1vaj\u00ed smysl hned po instalaci<\/h2>\n\n\n\n<p>N\u00ed\u017ee jsou typick\u00e9 p\u0159\u00edkazy, kter\u00e9 se hod\u00ed p\u0159i ka\u017edodenn\u00ed spr\u00e1v\u011b. Dobr\u00e9 je, \u017ee se daj\u00ed pou\u017e\u00edt jak interaktivn\u011b (admin p\u0159es SSH), tak ve skriptech.<\/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># Z\u00e1kladn\u00ed p\u0159ehled stavu Wordfence\nwp wfsec status\n\n# Spu\u0161t\u011bn\u00ed pln\u00e9ho bezpe\u010dnostn\u00edho skenu\nwp wfsec scan start --type=full\n\n# Sledov\u00e1n\u00ed pr\u016fb\u011bhu skenu\nwp wfsec scan status\n\n# V\u00fdpis v\u0161ech bezpe\u010dnostn\u00edch n\u00e1lez\u016f\nwp wfsec issues ls --status=all\n\n# Blokace IP adresy na 24 hodin (86400 s) s d\u016fvodem\nwp wfsec firewall block 192.168.1.100 --duration=86400 --reason=&quot;Brute force attempt&quot;\n\n# Kontrola stavu licence\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\"># Z\u00e1kladn\u00ed p\u0159ehled stavu Wordfence<\/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\"># Spu\u0161t\u011bn\u00ed pln\u00e9ho bezpe\u010dnostn\u00edho skenu<\/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\"># Sledov\u00e1n\u00ed pr\u016fb\u011bhu skenu<\/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\"># V\u00fdpis v\u0161ech bezpe\u010dnostn\u00edch n\u00e1lez\u016f<\/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\"># Blokace IP adresy na 24 hodin (86400 s) s d\u016fvodem<\/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\"># Kontrola stavu licence<\/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>V\u0161echny p\u0159\u00edkazy nav\u00edc podporuj\u00ed <code>--format=json<\/code>, co\u017e je praktick\u00e9 pro scripting (nap\u0159. parsov\u00e1n\u00ed p\u0159es <code>jq<\/code>, napojen\u00ed do monitoringu nebo do vlastn\u00edch intern\u00edch n\u00e1stroj\u016f).<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Abilities API ve WordPressu 6.9: pro\u010d je to d\u016fle\u017eit\u00e9 pro automatizace a AI agenty<\/h2>\n\n\n\n<p>Nejv\u011bt\u0161\u00ed \u201ewow\u201c moment je podpora <strong>WordPress Abilities API<\/strong>. Jde o nov\u00e9 standardizovan\u00e9 rozhran\u00ed p\u0159edstaven\u00e9 ve WordPressu 6.9, jeho\u017e smyslem je umo\u017enit automatiza\u010dn\u00edm n\u00e1stroj\u016fm a AI agent\u016fm zjistit, jak\u00e9 schopnosti (abilities) web nab\u00edz\u00ed, a pak je volat konzistentn\u00edm zp\u016fsobem \u2013 bez toho, aby ka\u017ed\u00fd plugin musel m\u00edt vlastn\u00ed ad\u2011hoc API, kter\u00e9 se t\u011b\u017eko integruje a je\u0161t\u011b h\u016f\u0159 objevuje.<\/p>\n\n\n\n<p>Tenhle plugin je jedn\u00edm z prvn\u00edch, kter\u00e9 Abilities API skute\u010dn\u011b implementuj\u00ed pro bezpe\u010dnostn\u00ed sc\u00e9n\u00e1\u0159e kolem Wordfence. V praxi to otev\u00edr\u00e1 cestu k AI asistovan\u00e9 bezpe\u010dnostn\u00ed rutin\u011b, integraci do vlastn\u00edch dashboard\u016f nebo k tomu, aby automatizace samy d\u011blaly pravideln\u00e9 kontroly a eskalovaly jen relevantn\u00ed incidenty.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Jak\u00e9 abilities plugin vystavuje<\/h3>\n\n\n\n<p>Plugin publikuje sedm kl\u00ed\u010dov\u00fdch schopnost\u00ed, kter\u00e9 pokr\u00fdvaj\u00ed skeny, n\u00e1lezy, firewall a licenci:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>scan-status<\/strong> \u2013 zji\u0161t\u011bn\u00ed aktu\u00e1ln\u00edho stavu skenu a pr\u016fb\u011bhu<\/li>\n\n\n<li><strong>scan-start<\/strong> \u2013 programov\u00e9 spu\u0161t\u011bn\u00ed bezpe\u010dnostn\u00edho skenu<\/li>\n\n\n<li><strong>issues-list<\/strong> \u2013 z\u00edsk\u00e1n\u00ed seznamu detekovan\u00fdch bezpe\u010dnostn\u00edch probl\u00e9m\u016f<\/li>\n\n\n<li><strong>issues-count<\/strong> \u2013 po\u010dty n\u00e1lez\u016f podle z\u00e1va\u017enosti<\/li>\n\n\n<li><strong>firewall-status<\/strong> \u2013 kontrola stavu WAF<\/li>\n\n\n<li><strong>firewall-block<\/strong> \u2013 blokov\u00e1n\u00ed IP p\u0159es API<\/li>\n\n\n<li><strong>license-status<\/strong> \u2013 dotaz na licen\u010dn\u00ed informace<\/li>\n\n<\/ul>\n\n\n\n<p>D\u016fle\u017eit\u00e1 je kombinace vlastnost\u00ed: rozhran\u00ed je <strong>self\u2011describing<\/strong> (n\u00e1stroj si um\u00ed \u201eosahat\u201c, co web um\u00ed), odpov\u011bdi jsou validovan\u00e9 v\u016f\u010di sch\u00e9matu a agent tak m\u016f\u017ee volat funkce bez psan\u00ed specifick\u00e9 integrace pro ka\u017ed\u00fd jednotliv\u00fd plugin.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Autentizace: Application Passwords + Basic Auth<\/h3>\n\n\n\n<p>Pro ov\u011b\u0159ov\u00e1n\u00ed plugin pou\u017e\u00edv\u00e1 <strong>WordPress Application Passwords<\/strong> (aplika\u010dn\u00ed hesla) p\u0159es <strong>Basic Auth<\/strong>. To je relativn\u011b p\u0159\u00edmo\u010dar\u00e9 pro server\u2011to\u2011server integrace i pro intern\u00ed automatizace, proto\u017ee se neop\u00edr\u00e1 o sd\u00edlen\u00ed prim\u00e1rn\u00edch p\u0159ihla\u0161ovac\u00edch \u00fadaj\u016f administr\u00e1tora.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Po\u017eadavky (requirements)<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li>WordPress 6.9+<\/li>\n\n\n<li>PHP 8.0+<\/li>\n\n\n<li>WP\u2011CLI 2.5+<\/li>\n\n\n<li>Plugin Wordfence Security (free nebo premium)<\/li>\n\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Instalace: ZIP do plugin\u016f nebo Composer (Bedrock)<\/h2>\n\n\n\n<p>Pokud chce\u0161 j\u00edt klasickou cestou, st\u00e1hne\u0161 ZIP a nahraje\u0161 ho do adres\u00e1\u0159e <code>\/wp-content\/plugins\/<\/code> a plugin aktivuje\u0161. Alternativn\u011b je mo\u017en\u00e9 nasadit ho p\u0159es Composer v Bedrock\u2011style projektu (pokud takhle web skl\u00e1d\u00e1\u0161), co\u017e se hod\u00ed pro reprodukovateln\u00e9 deploye.<\/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\">Kde mi to d\u00e1v\u00e1 nejv\u011bt\u0161\u00ed smysl v praxi<\/h2>\n\n\n\n<ul class=\"wp-block-list\">\n\n<li><strong>Spr\u00e1va v\u00edce web\u016f<\/strong>: jednotn\u00e9 p\u0159\u00edkazy pro skeny a blokace bez p\u0159ep\u00edn\u00e1n\u00ed administrac\u00ed.<\/li>\n\n\n<li><strong>Automatizace<\/strong>: <code>--format=json<\/code> + cron\/CI job = pravideln\u00e9 kontroly a reporting do Slacku\/monitoringu (dle toho, co pou\u017e\u00edv\u00e1\u0161).<\/li>\n\n\n<li><strong>Bezpe\u010dnostn\u00ed operace bez UI<\/strong>: rychl\u00e9 blokov\u00e1n\u00ed IP, kontrola WAF, licence a n\u00e1lez\u016f p\u0159es SSH.<\/li>\n\n\n<li><strong>Integrace p\u0159es Abilities API<\/strong>: standardizovan\u00e1 cesta, jak Wordfence napojit na n\u00e1stroje, kter\u00e9 um\u00ed abilities objevovat a volat, v\u010detn\u011b AI agent\u016f.<\/li>\n\n<\/ul>\n\n\n<div class=\"references-section\">\n                <h2>Reference \/ 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><li><a href=\"https:\/\/github.com\/trueqap\/wpcli-for-wordfence\/releases\/download\/v1.0.0\/wpcli-for-wordfence-1.0.0.zip\" target=\"_blank\" rel=\"noopener noreferrer\">Download WP CLI for Wordfence v1.0.0<\/a><\/li><\/ul>\n            <\/div>","protected":false},"excerpt":{"rendered":"<p>Spravuje\u0161 v\u00edc WordPress web\u016f a nechce\u0161 kv\u016fli ka\u017ed\u00e9mu skenu klikat v administraci? Nov\u00fd open\u2011source dopln\u011bk p\u0159id\u00e1v\u00e1 Wordfence do WP\u2011CLI a z\u00e1rove\u0148 jej vystavuje p\u0159es WordPress Abilities API, tak\u017ee jde zapojit i do automatizac\u00ed a AI agent\u016f.<\/p>\n","protected":false},"author":33,"featured_media":122,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[48,37,14,10,8],"class_list":["post-121","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\/cs\/wp-json\/wp\/v2\/posts\/121","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/users\/33"}],"replies":[{"embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/comments?post=121"}],"version-history":[{"count":1,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/posts\/121\/revisions"}],"predecessor-version":[{"id":123,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/posts\/121\/revisions\/123"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/media\/122"}],"wp:attachment":[{"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/media?parent=121"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/categories?post=121"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/helloblog.io\/cs\/wp-json\/wp\/v2\/tags?post=121"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}