Eolaire Eolaire
Le déanaí, bhí mé ag obair ar shuíomh Gréasáin WordPress agus theastaigh uaim inneall cuardaigh ardfheidhmíochta a chur leis ar fud an tsuímh. Tar éis go leor cuardaigh, roghnaigh mé Meilisearch agus chuir mé breiseán darb ainm Scry Search leis.
Chuaigh sé go réidh ar dtús. Shuiteáil mé an breiseán, chumraigh mé é, agus gineadh an t-innéacs go huathoibríoch. Bhí an luas cuardaigh thar a bheith gasta, agus bhí an taithí den scoth ar fad.
Ach seo an fhadhb.
Tá roinnt alt neamhghnách ar an suíomh gréasáin. Tá cuid acu le haghaidh tástála inmheánaí, tá cuid eile ina leathanaigh tuirlingthe tiomnaithe do chliaint shonracha, agus tá cuid eile ina ábhar neamhchríochnaithe nach mian linn a scriosadh. Caithfidh na haitheantais alt seo imithe go hiomlán ó thorthaí cuardaigh.
Ní leor nach féidir é a fháil; is leor nach féidir é a bheith in innéacs Meilisearch fiú.

Shíl mé go raibh sé seo simplí; níl ann ach cúpla ID a eisiamh. Caithfidh na crúcaí comhfhreagracha a bheith sa doiciméadacht breiseáin; níl le déanamh ach scagaire a chur leis agus sin é.
Mar a tharla sé, bhí mé mícheart.
Cén fáth a dteipeann ar mhodhanna traidisiúnta idircheaptha?
Ar dtús rinne mé iarracht ar an gcrúca scagaire a luaitear sa doiciméadacht oifigiúil. Chuir mé cúpla líne cóid le functions.php, shábháil mé é, athnuachan mé an cúlra, agus athinnéacsaigh mé é.
Ansin rinne mé seiceáil ar chúltaca Meilisearch.
Tá na hairteagail sin ann fós.
Bhí mé i mo shuí.
Shíl mé gur scríobh mé an cód mícheart, mar sin rinne mé seiceáil air arís agus arís eile, ach ní raibh aon rud cearr leis. Ansin chuardaigh mé Fadhbanna GitHub an bhreiseáin agus fuair mé amach go raibh fadhbanna comhchosúla ag roinnt daoine eile.
Is cosúil go n-úsáideann an breiseán Scry Search meicníocht scuaine tascanna neamhshioncrónach chun moill a sheachaint ar an bpróiseas sábhála cúlra. Ciallaíonn sé seo nuair a chliceálann tú "Sábháil Alt" sa chúlra, gur féidir na sonraí a bhrú láithreach isteach i dtábla tascanna saincheaptha, ag seachaint an scagacháin ailt aonair rialta.
Is é an rud is insídiaí fós ná nuair a chliceálann tú "Innéacs Poist" sa chúlra chun an t-innéacs domhanda a athghiniúint, go ndéanann an breiseán fiosrúchán bunachar sonraí baisce go díreach ag an leibhéal bunúsach. Ag an bpointe seo, ní bhfaigheann an crúca scagaire a chuir tú leis níos luaithe deis riamh a fhorghníomhú.
Is é sin le rá, ní thagann modhanna blocála traidisiúnta i bhfeidhm ach an nóiméad a shábhálann tú an t-alt de láimh. Ach tá loighic sioncrónaithe Scry Search i bhfad níos casta ná mar a shamhlófá.
Cód lárnach idircheapóra árachais dhúbailte
Tar éis dom smaoineamh air, thuig mé nach bhféadfaí an t-ábhar seo a fhágáil mar seo.
Ós rud é nach rialaíonn an crúca traidisiúnta ach an pointe iontrála "sábháil alt aonair", ní mór dom bealach a aimsiú chun é a bhac ó áiteanna eile chomh maith.
Tá dhá bhealach smaoinithe agam.
Is í an chéad cheist ná taobh tarchuir an líonra. Cibé acu sioncrónú alt aonair nó sioncrónú baisce atá i gceist, ní mór na sonraí deiridh a sheoladh chuig freastalaí Meilisearch trí iarratais HTTP, ceart? Mar sin, sula seoltar an t-iarratas HTTP, ba cheart dom a sheiceáil an bhfuil aitheantóirí na n-alt eisiata sin i gcorp an iarratais. Más ea, ba cheart dom bac a chur go díreach ar sheoladh an iarratais.
Baineann an dara pointe leis an gceist sa bhunachar sonraí. Ós rud é go n-aisghabhann an breiseán an liosta alt go díreach ón mbunachar sonraí le linn innéacsú baisce, bainfidh mé na haitheantais shonracha sin ó thorthaí an fhiosrúcháin sula ndéanfaidh mé an cheist bhunachar sonraí a fhorghníomhú. Ó thaobh an bhreiseáin de, níl na hairteagail seo ann ar chor ar bith, mar sin ní aisghabhfar iad.
Dhá chosán, árachas dúbailte. Mura féidir cosán amháin a bhac, tá ceann eile ann mar chúltaca.
Tar éis dom é a dhéanamh amach, thosaigh mé ag scríobh cód.
Don chéad idircheapóir, d'úsáid mé ceann dúchasach WordPress.pre_http_requestAn scagaire. Spreagann an crúca seo sula ndéanann WordPress aon iarratais HTTP. Is é mo loighic go mbraithfidh sé an bhfuil... sa URL iarrthameilisearchMá tá aitheantóirí na n-alt eisiata i gcorp an iarratais, cuirfear bac ar an iarratas.
Chun cosc a chur ar an mbreiseán earráidí a thuairisciú, ní mór dom freagra rathúil a bhréagnú freisin. Is é an fhormáid chaighdeánach freagartha do Meilisearch ná...{"taskUid":0,"status":"enqueued"}Níor thug mé ach an méid seo ar ais, rud a chuir ar an mbreiseán smaoineamh gur éirigh leis an sioncrónú.
An dara hidircheapóir a d'úsáid mépre_get_postsAn crúca. Spreagtar an crúca seo sula ndéanann WordPress fiosrúchán bunachar sonraí a fhorghníomhú. Is é mo loighic ná aon uair a dhéanann riarthóir oibríocht sa chúltaca, nó nuair a dhéanann breiseán oibríochtaí asincrónacha/sioncrónacha, ba chóir na haitheantais eisiata a chumasc isteach sa...post__not_inSna paraiméadair.
Tar éis dom é a chríochnú ag scríobh, rinne mé tástáil air.
Ar dtús, chuaigh mé go dtí an cúl-deireadh, d’oscail mé ceann de na hailt eisiata, rinne mé cúpla athrú beag, agus chliceáil mé ar nuashonrú. Sábháileadh é go rathúil gan aon earráidí. Ansin sheiceáil mé cúl-deireadh Meilisearch, agus níor athraigh innéacs an ailt; ní raibh aon rud nua le feiceáil.
Chliceáil mé "Innéacs Poist" arís agus atóg mé an t-innéacs iomlán. Tar éis tamaill a chaitheamh ag fanacht, rinne mé seiceáil ar chúlra Meilisearch. Bhí na hailt eisiata sin fós ann.
Tá sé déanta.
Anailís dhomhain: Conas a oibríonn an sásra árachais dhúbailte?
Le bheith ionraic, chuir an próiseas seo rud éigin sách suimiúil i gcuimhne dom.
Tá a fhios agat, sna 1880idí, nuair a bhí leictreachas ag teacht chun cinn go forleathan sna Stáit Aontaithe, chaith go leor úinéirí monarchan go leor airgid chun gineadóirí agus mótair leictreacha a cheannach agus iad a shuiteáil ina monarchana. Mar sin féin, tar éis a suiteála, fuair go leor daoine amach nach raibh feabhas suntasach tagtha ar éifeachtúlacht táirgthe.
为什么?
Mar gur chuir siad mótar leictreach in ionad an innill gaile, ach níor athraigh leagan amach, próisis agus modhanna bainistíochta na monarchan go hiomlán. Bhí an leictreachas nua, ach bhí an dearcadh maidir lena úsáid sean.
Ba iad na daoine a bhain fíor-thairbhe as borradh an leictreachais an chéad ghrúpa a thuig "cad is brí le leictreachas i ndáiríre." Níor athraigh siad a bhfoinse cumhachta amháin; rinne siad athdhearadh ar a bpróiseas táirgthe ar fad.
Baineann an rud céanna le ré na hintleachta saorga . Úsáideann go leor daoine hintleachta saorga mar uirlis, ach is beag duine a smaoiníonn ar an loighic bhunúsach a athraíonn sé. Tá an uirlis féin nua, ach d'fhéadfadh an dearcadh a úsáidtear chun í a úsáid a bheith as dáta.
Mar shampla, nuair a bhí mé ag bunú blocála cuardaigh WordPress, is dócha nach mbeadh mé in ann é a chur ag obair dá mba rud é go raibh mé díreach tar éis na modhanna caighdeánacha i ndoiciméadacht an bhreiseáin a leanúint. Tá sé seo amhlaidh toisc nach ionann loighic sioncrónaithe Scry Search agus an cur chuige traidisiúnta "sábháil alt amháin, sioncrónaigh alt amháin" a thuilleadh; tá scuainí asincrónacha, próiseáil bhaisc, agus a shraith meicníochtaí féin aige.
Caithfidh tú a dhéanamh amach conas a oibríonn an mheicníocht seo sula bhfaighidh tú fíor-dhul chun cinn.
Teorainneacha agus réamhchúraimí an phlean
Mar sin féin, caithfidh mé a rá go hionraic nach bhfuil an plean seo foirfe ach an oiread.
Tá teorainn shuntasach leis: ní féidir leis ach sioncrónuithe amach anseo a bhainistiú agus ní féidir leis taifid stairiúla atá ann cheana féin a scriosadh go huathoibríoch i Meilisearch. Is é sin le rá, má tá na hairteagail sin sioncrónaithe agat cheana féin, ní mór duit na seanshonraí a scriosadh de láimh i bpainéal Meilisearch nó orduithe API a úsáid.
Is tasc aonuaire é seo; nuair a bheidh sé déanta, ní gá duit a bheith buartha faoi a thuilleadh. Ach ní mór dom é seo a shoiléiriú roimh ré, ionas nach bhfaighidh tú na hairteagail sin fós sna torthaí cuardaigh agus nach nglacfaidh tú leis nach bhfuil an cód i bhfeidhm tar éis duit an cód a imscaradh.
Pointe eile le tabhairt faoi deara ná go mbraitheann an cur chuige seo ar ailtireacht bhunúsach líonra agus bunachar sonraí WordPress. Chomh fada agus a leanfaidh leaganacha amach anseo den bhreiseán Scry Search ag feidhmiú bunaithe ar an ailtireacht seo, fanfaidh an t-idircheapóir seo éifeachtach. Mar sin féin, má aistríonn sé riamh go meicníocht sioncrónaithe go hiomlán difriúil, d'fhéadfadh go mbeadh gá le hath-oiriúnú.
Le bheith ionraic, áfach, ní dócha go ndéanfaidh sé seo. Tá an t-éiceachóras WordPress ar fad tógtha ar an ailtireacht seo, agus is beagnach dodhéanta do bhreiseáin é a sheachbhóthar go hiomlán.
Treoir Trí Chéim maidir le Cur i bhFeidhm
/**
* Scry Search 双保险拦截器:彻底排除指定文章 ID 同步到 Meilisearch
*/
// ==========================================
// 【配置】请在这里填写你想要排除的文章或页面 ID
// ==========================================
define('MEILI_EXCLUDED_IDS', array(1067, 1014, 1474, 34020));
/**
* 保险一:拦截单篇保存/更新时的网络推送 (方案 A 优化版)
* 原理:当 WordPress 发送网络请求时,如果发现是发往 meilisearch 且带有排除的 ID,直接掐断
*/
add_filter('pre_http_request', function($preempt, $parsed_args, $url) {
// 1. 检查是不是发往 Meilisearch 的请求
if (strpos($url, 'meilisearch') !== false && isset($parsed_args['body'])) {
$body_content = $parsed_args['body'];
// 2. 检查请求体里是否包含任何一个被排除的文章 ID
foreach (MEILI_EXCLUDED_IDS as $id) {
// 匹配格式如 "id":1067 或 字符串中的 ID
if (strpos($body_content, (string)$id) !== false) {
// 找到匹配,直接拦截网络请求,并向插件伪造一个标准的成功响应
return array(
'response' => array('code' => 200, 'message' => 'OK'),
'body' => '{"taskUid":0,"status":"enqueued"}'
);
}
}
}
return $preempt;
}, 10, 3);
/**
* 保险二:拦截后台全量索引时的数据库查询 (方案 B)
* 原理:在插件试图从数据库捞取文章列表时,直接将这几个 ID 从查询结果中剔除
*/
add_action('pre_get_posts', function($query) {
// 仅在后台管理员操作,或者插件执行异步同步时生效
if (is_admin() || (defined('DOING_ASYNC') && DOING_ASYNC)) {
// 获取当前查询已经存在的排除 ID(如果有的话)
$current_excluded = $query->get('post__not_in');
if (!is_array($current_excluded)) {
$current_excluded = array();
}
// 将我们的专属排除 ID 合并进去
$query->set('post__not_in', array_merge($current_excluded, MEILI_EXCLUDED_IDS));
}
});
Mar fhocal scoir, déanaimis achoimre ar na céimeanna oibríochta.
Ar dtús, cóipeáil an cód go bun do chomhaid functions.php, nó cuir leis é ag baint úsáide as an mbreiseán Code Snippets. Ansin, ag an mbarr...defineSa réimse, cuir isteach aitheantóir an ailt nó an leathanaigh is mian leat a eisiamh.
Is é an dara céim ná innéacsanna stairiúla a ghlanadh. Logáil isteach i do phainéal Meilisearch, nó bain úsáid as orduithe API chun na sean-shonraí innéacs a scriosadh de láimh do na hairteagail eisiata.
Is í an tríú céim ná tástáil. Téigh go dtí an chúl-deireadh agus déan aon athruithe beaga ar an alt eisiata, cliceáil ar nuashonrú, agus ansin seiceáil cúl-deireadh Meilisearch. Mura bhfuil aon innéacs nua le feiceáil, tá an blocáil i bhfeidhm.
Le bheith ionraic, bhí mé i gcónaí beagáinín ciontach faoi na cineálacha seo alt comhroinnte teicniúla a scríobh.
B’fhéidir go mbeadh na rudaí a roinnim úsáideach do roinnt daoine, ach do dhaoine eile b’fhéidir nach mbeadh iontu ach oibríochtaí bunúsacha.
Ach bhí an próiseas chun blocáil cuardaigh WordPress a chur i bhfeidhm an uair seo thar a bheith léargasach. Is minic nach mbíonn na fadhbanna a bhíonn againn mar gheall ar easpa réiteach, ach mar gheall ar ár smaointeoireacht a bheith teoranta ag creatlacha atá ann cheana féin.
Cuireann an breiseán Scry Search crúca scagtha ar fáil, rud a fhágann go gcreidimid gurb é seo an t-aon rogha. Mar sin féin, cuireann ailtireacht iomlán WordPress i bhfad níos mó féidearthachtaí ar fáil. Is féidir idircheapadh a bhaint amach ag an tsraith líonra, agus is féidir é a dhéanamh ag an tsraith bunachar sonraí freisin. Chomh fada agus atá tú sásta smaoineamh, bíonn bealach ann i gcónaí.
Sin é an fáth a mbainim taitneamh as bheith ag imirt leis na giuirléidí teicniúla seo. Ní bhaineann sé le bheith ag taispeáint rudaí nó le bheith suntasach. Is amhlaidh atá toisc go bhfuil an mothúchán go dtuigeann tú fadhb go hiomlán thar a bheith sásúil.
Díreach mar an uair seo, ón mearbhall tosaigh, go dtí an machnamh sa lár, go dtí an réiteach deiridh, bhí an próiseas ar fad cosúil le puzal a réiteach.
Tá an rúndiamhair réitithe, tá an freagra nochtaithe, is léir go raibh sé chomh simplí sin.
Ach mura bhfuil tú imithe tríd an bpróiseas mearbhall sin, ní thuigfidh tú an lúcháir shimplí seo choíche.
Anois agus tú tar éis an méid seo a léamh, má fuair tú é ina chuidiú, tabhair "Is maith liom" agus roinn é le do thoil. Más mian leat nuashonruithe a fháil ar dtús, is féidir leat mé a leanúint freisin.
Go raibh maith agat as mo alt a léamh. Feicfidh mé thú an chéad uair eile.
Tá súil agam go mbeidh an t-alt "Conas a Eisiamh go hiomlán a Thagairm Sonraí Poist ó Shioncrónú le Meilisearch i WordPress (Breiseán Cuardaigh Scry i gCleachtas)" atá roinnte ar bhlag Chen Weiliang ( https://www.chenweiliang.com/ ) ina chuidiú duit.
Ná bíodh drogall ort nasc an ailt seo a roinnt: https://www.chenweiliang.com/cwl-34343.html
