Ìwé Directory
Mo ṣẹ̀ṣẹ̀ ń ṣiṣẹ́ lórí ojú-òpó wẹ́ẹ̀bù WordPress kan , mo sì fẹ́ fi ẹ̀rọ ìwákiri tó gbajúmọ̀ kún ojú-òpó wẹ́ẹ̀bù náà. Lẹ́yìn ìwákiri púpọ̀, mo yan Meilisearch mo sì so ó pọ̀ mọ́ afikún kan tí a ń pè ní Scry Search.
Ó lọ láìsí ìṣòro ní àkọ́kọ́. Mo fi ohun èlò ìfiranṣẹ́ náà sí orí ẹ̀rọ náà, mo ṣètò rẹ̀, a sì ṣe àkójọpọ̀ rẹ̀ láìsí ìṣòro. Ìyára ìwákiri náà yára gan-an, ìrírí náà sì dára gan-an.
Sugbon nibi ba wa ni isoro.
Ọ̀pọ̀lọpọ̀ àpilẹ̀kọ tí kò wọ́pọ̀ ló wà lórí ojú-òpó wẹ́ẹ̀bù náà. Àwọn kan wà fún ìdánwò inú, àwọn kan jẹ́ ojú-ìwé ìbalẹ̀ fún àwọn oníbàárà pàtó, àwọn mìíràn sì jẹ́ àkóónú tí a kò tíì parí tí a kò fẹ́ parẹ́. Mo nílò kí àwọn ID àpilẹ̀kọ wọ̀nyí parẹ́ pátápátá nínú àwọn àbájáde ìwárí.
Kò tó pé a kò rí i; ó jẹ́ pé a kò tilẹ̀ lè rí i nínú àtọ́ka Meilisearch.

Mo rò pé èyí rọrùn; ó kàn jẹ́ ọ̀rọ̀ yíyọ àwọn ID díẹ̀ kúrò. Àwọn ìwé àfikún gbọ́dọ̀ ní àwọn ìkọ́ tí ó báramu; kan fi àlẹ̀mọ́ kan kún un, ó sì ti parí.
Bí ó ti wá rí, mo ṣe àṣìṣe.
Kí ló dé tí àwọn ọ̀nà ìdènà ìbílẹ̀ fi ń kùnà?
Mo kọ́kọ́ gbìyànjú àlẹ̀mọ́ tí a mẹ́nu kàn nínú ìwé àṣẹ náà. Mo fi àwọn ìlà díẹ̀ ti kódù kún functions.php, mo fi pamọ́, mo tún àtẹ̀gùn ẹ̀yìn náà ṣe, mo sì tún un ṣe àtúntò.
Lẹ́yìn náà ni mo ṣe àyẹ̀wò ẹ̀yìn Meilisearch.
Àwọn àpilẹ̀kọ wọ̀nyẹn ṣì wà níbẹ̀.
Ẹnu yà mí gan-an.
Mo rò pé mo ti kọ kódì tí kò tọ́, nítorí náà mo ṣàyẹ̀wò rẹ̀ nígbà púpọ̀, ṣùgbọ́n kò sí ohun tí ó burú nínú rẹ̀. Lẹ́yìn náà mo wá àwọn ìṣòro GitHub ti plugin náà mo sì rí i pé ọ̀pọ̀ ènìyàn mìíràn ti rí irú ìṣòro bẹ́ẹ̀.
Ó hàn gbangba pé àfikún Scry Search ń lo ìlànà ìtòsí iṣẹ́-ṣíṣe asynchronous láti yẹra fún dídín ìlànà ìpamọ́ àtẹ̀lé kù. Èyí túmọ̀ sí wípé nígbà tí o bá tẹ "Fi Àpilẹ̀kọ Pamọ́" ní ẹ̀yìn, a lè tì dátà náà sínú tábìlì iṣẹ́-ṣíṣe àdáni lẹ́sẹ̀kẹsẹ̀, kí ó má baà kọjá àlò àlò àlò àlò kan.
Ohun tó tún burú jù ni pé nígbà tí o bá tẹ "Àwọn Ìfiránṣẹ́ Àtọ́ka" ní ìsàlẹ̀ láti tún àtọ́ka àgbáyé ṣe, àfikún náà ń ṣe ìbéèrè ìwádìí lórí ibi ìkópamọ́ data ní ìpele ìsàlẹ̀. Ní àkókò yìí, ìkọ̀kọ̀ àlẹ̀mọ́ tí o fi kún un tẹ́lẹ̀ kò ní ní àǹfààní láti ṣe é.
Ní ọ̀rọ̀ mìíràn, àwọn ọ̀nà ìdènà ìbílẹ̀ nìkan ló máa ń ṣiṣẹ́ nígbà tí o bá fi ìwé náà pamọ́ pẹ̀lú ọwọ́. Ṣùgbọ́n ìlànà ìṣiṣẹ́pọ̀ Scry Search jẹ́ ohun tó díjú ju bí o ṣe lè rò lọ.
Kóòdù ìdènà ìdábòbò méjì
Lẹ́yìn tí mo ronú nípa rẹ̀, mo wá rí i pé a kò lè fi ọ̀rọ̀ yìí sílẹ̀ báyìí.
Nítorí pé ìkọ́ ìbílẹ̀ nìkan ni ó ń darí ojú ibi tí a ń gbà "fipamọ́ ohun èlò kan ṣoṣo", mo nílò láti wá ọ̀nà láti dènà rẹ̀ láti àwọn ibòmíràn pẹ̀lú.
Mo ti wá pẹlu awọn ọna meji.
Ìṣòro àkọ́kọ́ ni òpin ìfiránṣẹ́ nẹ́tíwọ́ọ̀kì. Yálà ó jẹ́ ìfọwọ́sowọ́pọ̀ ohun èlò kan tàbí ìfọwọ́sowọ́pọ̀ batch, a ṣì nílò láti fi ìwádìí ìkẹyìn ránṣẹ́ sí olupin Meilisearch nípasẹ̀ àwọn ìbéèrè HTTP, àbí bẹ́ẹ̀ kọ́? Nítorí náà, kí n tó fi ìbéèrè HTTP ránṣẹ́, ó yẹ kí n ṣàyẹ̀wò bóyá ẹgbẹ́ ìbéèrè náà ní àwọn ID ti àwọn àpilẹ̀kọ tí a yọ kúrò. Tí ó bá rí bẹ́ẹ̀, ó yẹ kí n dènà ìbéèrè náà ní tààràtà kí a má baà fi ránṣẹ́.
Kókó kejì jẹ́ nípa ìbéèrè lórí ibi ìkópamọ́. Níwọ́n ìgbà tí àfikún náà ti gba àkójọ àpilẹ̀kọ náà tààrà láti ibi ìkópamọ́ nígbà tí a bá ń ṣe àkójọpọ̀, màá yọ àwọn ID pàtó wọ̀nyẹn kúrò nínú àwọn àbájáde ìbéèrè náà kí n tó ṣe ìbéèrè lórí ibi ìkópamọ́ náà. Láti ojú ìwòye àfikún náà, àwọn àpilẹ̀kọ wọ̀nyí kò sí rárá, nítorí náà a kò ní rí wọn gbà.
Ọ̀nà méjì, ìbánigbófò méjì. Tí ọ̀nà kan kò bá ṣeé dí, ọ̀nà mìíràn wà gẹ́gẹ́ bí àtìlẹ́yìn.
Lẹ́yìn tí mo ti ṣe àyẹ̀wò rẹ̀ tán, mo bẹ̀rẹ̀ sí í kọ koodu.
Fún interceptor àkọ́kọ́, mo lo èyí tí ó jẹ́ ti WordPress.pre_http_requestÀlẹ̀mọ́ náà. Ìkọ́ yìí máa ń bẹ̀rẹ̀ kí WordPress tó ṣe ìbéèrè HTTP. Ìrònú mi ni pé yóò rí bóyá URL tí a béèrè ní...meilisearchTí ẹgbẹ́ ìbéèrè náà bá ní àwọn ID ti àwọn ohun tí a yọ kúrò nínú rẹ̀, ìbéèrè náà yóò dina.
Láti dènà kí àfikún náà má ṣe ròyìn àṣìṣe, mo tún nílò láti ṣe àṣeyọrí ìdáhùn. Ọ̀nà ìfèsì tó wọ́pọ̀ fún Meilisearch ni...{"taskUid":0,"status":"enqueued"}Mo kan da eyi pada, mo si jẹ ki afikun naa ro pe amuṣiṣẹpọ naa ṣaṣeyọri.
Ẹ̀rọ ìdábùú kejì tí mo lòpre_get_postsÌkọ́ náà. A máa ń lo ìkọ́ yìí kí WordPress tó ṣe ìbéèrè lórí ibi ìpamọ́ dátà. Ìrònú mi ni pé nígbàkúgbà tí olùdarí bá ṣe iṣẹ́ kan nínú ẹ̀yìn, tàbí nígbà tí ohun èlò ìfilọ́lẹ̀ bá ṣe iṣẹ́ asynchronous/synchronous, àwọn ID tí a yọ kúrò gbọ́dọ̀ para pọ̀ mọ́...post__not_inNínú àwọn pàrámítà.
Lẹ́yìn tí mo parí kíkọ rẹ̀, mo dán an wò.
Àkọ́kọ́, mo lọ sí ẹ̀yìn ìwé náà, mo ṣí ọ̀kan lára àwọn àpilẹ̀kọ tí a yọ kúrò, mo ṣe àwọn àtúnṣe díẹ̀, mo sì tẹ àtúnṣe náà. Ó ti fipamọ́ láìsí àṣìṣe kankan. Lẹ́yìn náà mo ṣàyẹ̀wò ẹ̀yìn ìwé náà, àtòjọ ìwé náà kò sì yí padà; kò sí ohun tuntun kankan tí ó fara hàn.
Mo tẹ "Awọn Ifiweranṣẹ Atọka" lẹẹkansii mo si tun gbogbo atọka naa ṣe. Lẹhin ti mo duro diẹ, mo ṣayẹwo ẹhin Meilisearch. Awọn nkan ti a ko yọ kuro wọnyẹn tun wa nibẹ.
Ó ti parí.
Àgbéyẹ̀wò jíjinlẹ̀: Báwo ni ẹ̀rọ ìbánigbófò méjì ṣe ń ṣiṣẹ́?
Láti sọ òótọ́, ìlànà yìí rán mi létí ohun kan tó dùn mọ́ mi gan-an.
O mọ̀ pé, ní ọdún 1880, nígbà tí iná mànàmáná ṣẹ̀ṣẹ̀ gbilẹ̀ ní Amẹ́ríkà, ọ̀pọ̀ àwọn onílé iṣẹ́ máa ń ná owó púpọ̀ láti ra àwọn ẹ̀rọ amúná àti àwọn mọ́tò iná mànàmáná kí wọ́n sì fi wọ́n sí ilé iṣẹ́ wọn. Ṣùgbọ́n, lẹ́yìn tí wọ́n fi wọ́n sílé, ọ̀pọ̀ ènìyàn rí i pé iṣẹ́ ṣíṣe kò sunwọ̀n sí i ní pàtàkì.
àí?
Nítorí wọ́n kàn fi mọ́tò iná mànàmáná rọ́pò ẹ́ńjìnnì steam, ṣùgbọ́n gbogbo ètò, ìlànà àti ọ̀nà ìṣàkóso ilé iṣẹ́ náà kò yí padà. Iná mànàmáná tuntun ni, ṣùgbọ́n èrò tí a ní fún lílò ó ti pẹ́.
Àwọn tó jàǹfààní nínú ìdàgbàsókè iná mànàmáná gan-an ni ẹgbẹ́ àkọ́kọ́ tó lóye “ohun tí iná mànàmáná túmọ̀ sí gan-an.” Wọn kò yí orísun agbára wọn padà nìkan; wọ́n tún gbogbo iṣẹ́ ìṣelọ́pọ́ wọn ṣe.
Bákan náà ló rí ní àkókò AI . Ọ̀pọ̀ ènìyàn ló ń lo AI gẹ́gẹ́ bí irinṣẹ́, àmọ́ díẹ̀ ló ń ronú nípa bí ó ṣe ń yí padà. Ohun èlò náà fúnra rẹ̀ jẹ́ tuntun, àmọ́ èrò tí wọ́n ń lò ó lè máa bá a lọ.
Fún àpẹẹrẹ, nígbà tí mo ń ṣètò ìdènà ìwákiri WordPress, ó ṣeé ṣe kí n má ti lè mú un ṣiṣẹ́ tí mo bá kàn tẹ̀lé àwọn ọ̀nà ìṣàpẹẹrẹ nínú ìwé àfikún náà. Èyí jẹ́ nítorí pé ìlànà ìṣiṣẹ́pọ̀ Scry Search kò tún jẹ́ ọ̀nà àṣà mọ́ "save one article, synchronize one article"; ó ní àwọn ìlà asynchronous, processing batch, àti àwọn ìlànà tirẹ̀.
O nilo lati wa bi eto yii se n sise ki o to le ri aseyori gidi kan.
Awọn idiwọn ati awọn iṣọra ti eto naa
Sibẹsibẹ, mo gbọdọ sọ ni otitọ pe eto yii ko pe rara.
Ó ní ààlà pàtàkì kan: ó lè ṣàkóso àwọn ìṣọ̀kan ọjọ́ iwájú nìkan, kò sì le pa àwọn àkọsílẹ̀ ìtàn tó wà ní Meilisearch rẹ́ láìfọwọ́kàn. Ní ọ̀rọ̀ mìíràn, tí o bá ti ṣe àtúnṣe àwọn àpilẹ̀kọ wọ̀nyẹn, o ṣì nílò láti pa àwọn ìwífún àtijọ́ tó wà nínú dashboard Meilisearch rẹ́ pẹ̀lú ọwọ́ tàbí nípa lílo àwọn àṣẹ API.
Iṣẹ́ kan ṣoṣo ni èyí; nígbà tí ó bá ti parí, o kò nílò láti ṣàníyàn nípa rẹ̀ mọ́. Ṣùgbọ́n mo ní láti sọ èyí di mímọ̀ ṣáájú, kí lẹ́yìn tí o bá ti fi kódì náà síta, o kò ní rí àwọn àpilẹ̀kọ wọ̀nyẹn nínú àwọn àbájáde ìwárí kí o sì rò pé kódì náà kò tíì ṣiṣẹ́.
Ohun mìíràn tó yẹ kí a kíyèsí ni pé ọ̀nà yìí gbára lé ìpìlẹ̀ nẹ́tíwọ́ọ̀kì àti ìpìlẹ̀ ibi ìkópamọ́ dátà WordPress. Níwọ̀n ìgbà tí àwọn àtúnṣe Scry Search plugin ọjọ́ iwájú bá ń bá a lọ láti ṣiṣẹ́ ní ìbámu pẹ̀lú ìpìlẹ̀ yìí, interceptor yìí yóò máa ṣiṣẹ́ dáadáa. Ṣùgbọ́n, tí ó bá yípadà sí ẹ̀rọ ìṣiṣẹ́pọ̀ tó yàtọ̀ pátápátá, nígbà náà àtúnṣe lè pọndandan.
Ṣùgbọ́n, láti sọ òótọ́, èyí kò ṣeé ṣe. Gbogbo ètò ìṣiṣẹ́ WordPress ni a kọ́ lórí ètò ìṣiṣẹ́ yìí, kò sì ṣeé ṣe fún àwọn afikún láti yẹra fún un pátápátá.
Ìtọ́sọ́nà Ìgbésẹ̀ Mẹ́ta sí Ìmúṣe
/**
* 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));
}
});
Níkẹyìn, ẹ jẹ́ kí a ṣe àkópọ̀ àwọn ìgbésẹ̀ iṣẹ́ náà.
Àkọ́kọ́, daakọ koodu naa si isalẹ faili functions.php rẹ, tabi fi sii nipa lilo afikun Code Snippets. Lẹ́yìn náà, ní òkè...defineNínú àkójọpọ̀ náà, tẹ ID ti àpilẹ̀kọ tàbí ojú ìwé tí o fẹ́ yọ kúrò.
Igbesẹ keji ni lati nu awọn atọka itan-akọọlẹ. Wọle si dasibodu Meilisearch rẹ, tabi lo awọn aṣẹ API lati paarẹ data atọka atijọ fun awọn nkan ti a ko yọ kuro pẹlu ọwọ.
Igbesẹ kẹta ni idanwo. Lọ si backend ki o ṣe awọn ayipada kekere eyikeyi si nkan ti a ko yọ kuro, tẹ imudojuiwọn, lẹhinna ṣayẹwo backend Meilisearch. Ti ko ba si atọka tuntun ti o han, idilọwọ naa ti bẹrẹ iṣẹ.
Láti sọ òótọ́, mo ti nímọ̀lára ẹ̀bi díẹ̀ nígbà gbogbo nípa kíkọ irú àwọn àpilẹ̀kọ ìpínkiri ìmọ̀-ẹ̀rọ wọ̀nyí.
Àwọn nǹkan tí mo ń pín lè wúlò fún àwọn ènìyàn kan, ṣùgbọ́n fún àwọn mìíràn wọ́n lè jẹ́ iṣẹ́ pàtàkì.
Ṣùgbọ́n ìlànà ìdènà ìwákiri WordPress ní àkókò yìí jẹ́ ohun tó yéni gan-an. Lọ́pọ̀ ìgbà, àwọn ìṣòro tí a ń rí kì í ṣe nítorí àìsí ojútùú, ṣùgbọ́n nítorí pé ìrònú wa ní ààlà nípasẹ̀ àwọn ètò tó wà.
Àfikún Scry Search pèsè ìfàmọ́ra ìfọ́mọ́ra, èyí tí ó mú wa gbàgbọ́ pé èyí ni àṣàyàn kan ṣoṣo. Síbẹ̀síbẹ̀, gbogbo ètò WordPress ní àwọn àǹfààní púpọ̀ sí i. A lè ṣe ìdènà ní ìpele nẹ́tíwọ́ọ̀kì, a sì tún lè ṣe é ní ìpele dátà. Níwọ̀n ìgbà tí o bá fẹ́ ronú, ọ̀nà kan wà nígbà gbogbo.
Ìdí nìyẹn tí mo fi gbádùn ṣíṣe àtúnṣe pẹ̀lú àwọn ẹ̀rọ ìmọ̀-ẹ̀rọ wọ̀nyí. Kì í ṣe nípa ṣíṣe àfihàn tàbí gbígbìyànjú láti dàbí ẹni tó gbajúmọ̀. Ó jẹ́ nítorí pé ìmọ̀lára òye ìṣòro kan pátápátá jẹ́ ohun tó tẹ́ mi lọ́rùn gidigidi.
Gẹ́gẹ́ bí àkókò yìí, láti ìdàrúdàpọ̀ àkọ́kọ́, sí àtúnṣe àárín, sí ìdáhùn ìkẹyìn, gbogbo ìlànà náà dàbí yíyanjú àdììtú kan.
A ti yanjú àṣírí náà, a ti tú ìdáhùn náà payá, ó sì wá hàn pé ó rọrùn gan-an.
Ṣùgbọ́n tí o kò bá tíì la ìlànà ìdàrúdàpọ̀ yẹn kọjá, o kò ní lóye ayọ̀ tí ó rọrùn yìí láé.
Ní báyìí tí o ti ka ìwé yìí tán, tí o bá rí i pé ó wúlò, jọ̀wọ́ fẹ́ràn rẹ̀ kí o sì pín in. Tí o bá fẹ́ gba àwọn ìròyìn tuntun ní àkọ́kọ́, o lè tẹ̀lé mi pẹ̀lú.
Ẹ ṣeun fún kíkà àpilẹ̀kọ mi. Ẹ tún rí ara yín nígbà míì.
Ní ìrètí, àpilẹ̀kọ náà “Bí a ṣe lè yọ ID ìfìwéránṣẹ́ pàtó kan kúrò nínú Synchronizing pẹ̀lú Meilisearch nínú WordPress (Scry Search Plugin in Practice)” tí a pín lórí ìwé ìròyìn Chen Weiliang ( https://www.chenweiliang.com/ ) yóò wúlò fún ọ.
Má ṣe ṣiyemeji láti pín ìjápọ̀ àpilẹ̀kọ yìí: https://www.chenweiliang.com/cwl-34343.html
