benjaminmedia / wp-cxense
此插件通过添加元标签和调用cXense API将您的网站与cXense集成
Requires
- php: >=7.4
- bonnier/willow-mu-plugins: ^2.0
- bordoni/phpass: ^0.3
- illuminate/support: ^8.83
Requires (Dev)
- composer-plugin-api: ^1.1
- codeception/module-asserts: ^1.0
- codeception/module-cli: ^1.0
- codeception/module-db: ^1.0
- codeception/module-filesystem: ^1.0
- codeception/module-phpbrowser: ^1.0
- codeception/module-webdriver: ^1.0
- codeception/util-universalframework: ^1.0
- johnpbloch/wordpress: ^5.8
- lucatume/wp-browser: ^3.1
- dev-master
- 3.3.3
- v3.3.2
- 3.3.1
- 3.3.0.x-dev
- 3.3.0
- 3.2.9
- 3.2.8
- 3.2.7
- 3.2.6
- 3.2.5
- 3.2.4
- 3.2.3
- 3.2.2
- 3.2.1
- 3.2
- 3.1.0
- v3.0.0.x-dev
- 3.0.0
- 2.5.2
- 2.5.1
- 2.5.0
- 2.4.0
- 2.3.0
- 2.2.2
- 2.2.1
- 2.2.0
- 2.1.2
- 2.1.1
- 2.1.0
- 2.0.4
- 2.0.3
- 2.0.2
- 2.0.1
- 2.0.0
- 1.4.4
- 1.4.3
- 1.4.2
- 1.4.1
- 1.4.0
- v1.3.2
- v1.3.1
- v1.3.0
- v1.2.19
- v1.2.18
- v1.2.17
- v1.2.16
- v1.2.15
- v1.2.14
- v1.2.13
- v1.2.12
- v1.2.11
- v1.2.10
- v1.2.9
- v1.2.8
- v1.2.7
- v1.2.6
- v1.2.5
- v1.2.4
- v1.2.3
- v1.2.2
- v1.2.1
- v1.2.0
- v1.1.23
- v1.1.22
- v1.1.21
- v1.1.20
- v1.1.19
- v1.1.18
- v1.1.17
- v1.1.16
- v1.1.15
- v1.1.14
- v1.1.13
- v1.1.12
- v1.1.11
- v1.1.10
- v1.1.9
- v1.1.8
- v1.1.7
- v1.1.6
- v1.1.5
- v1.1.4
- v1.1.3
- v1.1.2
- v1.1.1
- v1.1.0
- v1.0.10
- v1.0.9
- v1.0.8
- v1.0.7
- v1.0.6
- v1.0.5
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-WILL-5331/Bug/rempve-pinging-cxense-functionality
- dev-dependabot/composer/guzzlehttp/psr7-2.5.0
- dev-legacy
This package is auto-updated.
Last update: 2024-09-12 11:09:07 UTC
README
此插件使您的WordPress网站能够与cXense集成。它添加了cXense扫描您的网站所需的元标签和脚本。它还会在您更改内容时调用cXense。最后,它还提供了保存针对不同内容类型的cXense推荐小部件的可能性,并提供挂钩在您的视图/主题中调用它们。
要求
- WordPress 4.3或更高版本
- 语言支持(可选):必须安装并激活Polylang插件,版本1.8.4或更高
- PHP 7.1或更高
安装/配置
通过composer安装
composer require benjaminmedia/wp-cxense
从以下位置下载最新版本:https://github.com/BenjaminMedia/wp-cxense/releases 然后解压并将其放置在您的/wp-content/plugins目录中。
设置
安装并激活插件后,请确保您已设置一组cXense API的API凭据。获取您的凭据后,您可以访问标记为cXense的设置页面。在这里,您必须输入您的 cXense 网站ID
、cXense API用户
、cXense API密钥
以及最终的 cXense 组织前缀
。
请记住,直到您在设置页面中检查了 启用
开关,插件将不会工作
小部件
插件将为您的WordPress安装中可用的每个帖子类型生成一个 CX 小部件ID
设置字段。在这里,您必须输入要在您的内容类型中表示的cXense推荐小部件ID。
为了调试目的,您可以启用或禁用查询缓存。在生产环境中建议启用。
按小部件ID排序将仅在wp-base中的小部件排序选项中使用。
渲染小部件
为了渲染您的帖子中可用的小部件,您应该确保您已在插件设置页面中填写了 CX 小部件ID
字段。
在渲染小部件时,插件提供了两个选项
- 让cXense渲染小部件的HTML
- 获取小部件的数据并自己构建HTML
选择您想使用的方法后,您应该前往代表您的post_type单视图的主题文件。从该文件中,您可以调用以下方法来获取小部件数据
让cXense渲染小部件的HTML
WpCxense::instance()->render_widget();
此函数的示例输出可能如下所示
<div id="targetElement"> <script type="text/javascript"> document.write(data.response.template + '\n'); </script> <div class="item"> <a id="cXLinkIditl9abmrwgnm6p94" href="http://api.cxense.com/public/widget/click/GHVxM-yuEld7tlHB8lLrWC5jLoQYrF5gUs1rQK6CLuzqTVYiNXv6oZIhhNasqiBbPYlY2_nBmMn2aM8imnN5Y0VXxers9cYtaPN1-kIKDNd-dw78wcSKMCLNK45PnASBJagtCbsrhK9JwUfBEeuVtGs1L3HeqDWe5qKvKc7dWeFC77wB_w5fBFQlcXCgyOLmfQwO21Cfh2QcoBs4J8A2pN6OkKQOPyC0lwIbM30ZaHAUZ774R5ASnLc6GLOpPyN38YwdvjAL7iAigpE4fpAcq6O5HXG6PbQljmp-wk1GJvw6hWAigKp1gsSJmhPhZjhIP-pbABDfOl7OkS-k42wjAxKuCeukqgJW04_J0tWRGygNzTm4Tno54OQAgHVWnh4iZDyOaXBjkKAGQHDMPY7IGBfSjDZKOiviklKINjAbb1STXbgDr27BhMZKuWC-y4fMWVnganRI7IVRA8bgd6zl0V4DX9VjvTUEJLSOWq-T6kEzsdG-ENGrw4EVauuyd1h9kysOAuH_egm1XoDcmHpYSMzPmhmyeOgfJpGFg6L09vXFTi6GQ39q4kJYMeQSlC_xO3f1vJzIhn9Y9D6kRIVQMASyFC31lcSwR9pVoOcQav5duA-d4wVciKTKq_RehjVfwqEFxYz9v0WTo8Sqcoc0" target="_top"> <div class="thumbnail" style="width: 300px; height: 200px; overflow: hidden; position: relative;"><img style="position: relative; left: 0px; top: -7.2px;" src="http://content-thumbnail.cxpublic.com/content/dominantthumbnail/f95381682e3604de99d30788b24fb3a1538616ee.jpg?57e79849" width="300" height="236" alt=""></div> <div class="text-wrapper"> <h3 class="title">Hindbærsmoothie med æble og lakrids</h3> </div> </a> </div> <div class="item"> <a id="cXLinkIditl9abmrpj1kla6v" href="http://maaltid.nu/herkules-pavillonens-bedste-frokost-opskrifter" target="_top"> <div class="thumbnail" style="width: 300px; height: 200px; overflow: hidden; position: relative;"><img style="position: relative; left: 0px; top: -7.2px;" src="http://content-thumbnail.cxpublic.com/content/dominantthumbnail/cf4b03ff330434ddec3447a014ccbd4a15089290.jpg?57d6c1e2" width="300" height="236" alt=""></div> <div class="text-wrapper"> <h3 class="title">Herkules Pavillonens bedste frokost-opskrifter</h3> </div> </a> </div> ... </div>
获取小部件的数据并自己构建HTML
WpCxense::instance()->get_widget_data();
此函数的示例输出可能如下所示
array (size=12) 0 => object(stdClass)[2636] public 'recs-articleid' => string '795' (length=3) public 'bod-pagetype' => string 'recipe' (length=6) public 'dominantthumbnail' => string 'http://content-thumbnail.cxpublic.com/content/dominantthumbnail/f95381682e3604de99d30788b24fb3a1538616ee.jpg?57e79849' (length=117) public 'dominantthumbnaildimensions' => string '300x236' (length=7) public 'title' => string 'Hindbærsmoothie med æble og lakrids' (length=37) public 'click_url' => string 'http://api.cxense.com/public/widget/click/HV4bL7qxuVIVUmrMEsh4zQ6S2A5_BkkxEuByIzyDKMZAYCrJlJOTpy7QFvYxf7dkW0ljBE_55ig9vYxG3FNaXmKGsr03HH5w1wa7-E6mbJI-gdqHJNx6pgIjvKyM8TUGnhfwe0NsyjAkgzirNM66WfPhG9_Z9lsiWIJauO3C82KWYdRhA99EBXg6Ynsh9xwIq62wNJAaj_OPTVFhUuGiLxW7uVQ4DNT0BjRcn8ne0Uq6y8Ew0DYUDCfCFp6DwOy_D9MK7j5wpKSfRykLOGNNo35udNcfALBcZJfoMZ7Uqgs19IZeGrAv11RDIz1cNBmWq3yEn-QKqeKFgK7cqwjKeCr91PERbwGbDu4kN9xkv1NPjTK1M_attpQjlCLy3E9_JstO-aCxP6XtmtnIExUnl1Qq7iVPXAbP3fxlT3wmIOetk4IvoGKsXhdFkRIMCD1owQwY27bVvzwuPCgTXJ-7UO'... (length=599) public 'url' => string 'http://maaltid.nu/opskrifter/hindbaersmoothie-med-aeble-og-lakrids' (length=66) 1 => object(stdClass)[2672] public 'recs-articleid' => string '1369' (length=4) public 'bod-pagetype' => string 'recipe' (length=6) public 'dominantthumbnail' => string 'http://content-thumbnail.cxpublic.com/content/dominantthumbnail/6b0ddce458039f3905b5b3515356002536ab614c.jpg?57ea261a' (length=117) public 'dominantthumbnaildimensions' => string '300x236' (length=7) public 'title' => string 'Italiensk til middag: Risotto med 2 slags græskar og salvie' (length=60) public 'click_url' => string 'http://api.cxense.com/public/widget/click/mLsD8MoXunkEcOtky6wQJXpRjzYcvvrFoXsONQdOI5FDqsmnlun6sVcaK-PIsvyT9KoXSvOKxiS4wzBrjGb0PaCtk_1bFn88sHSzq7LJF4CL7-Q4-50nJl3JC3oyrnAM1W_Cub7qXcAHSFmBjVkBjAGRaiA_F-Du9Y1q2by9YikilWco43hRZeUHVyQ2RLOZ7as8C1SeEXdKHeDi8HT5SGqMox-hAdBhwHNLtXLdJ_t1u9G90QOmQw-xitTc4PUknHSdtPyiDgYrBNNxHhOehs0_wHKGxka4k-g6VOAo7ovFGF2aRB-32QAqSPu_ohd-nNO_J0tEMll1uofTI9XCePnkI2O1W0Cq6MkEcyWVZQ-72hWiTrfn2z8x-BRd9ZE8cFvdWV8OU-Ojf02KEKesGfVgUltFY-HLImdE2NCkGV-jk7RoHYXesghIvfTufvKnMORmayI5lkLDZQ5Dp7u9wh'... (length=613) public 'url' => string 'http://maaltid.nu/opskrifter/kom-i-godt-humor-med-graeskarrisotto-med-salvie' (length=76) 2 => ...
文档
搜索文档
如果搜索数组中缺少'query'键,则抛出 DocumentSearchMissingSearch 异常。
搜索
WpCxense::instance()->search_documents([ 'query' => 'search_term', // mandatory 'page' => 1, // optional, defaults to 1 'count' => 10, // optional, defaults to 10 'filter_operator => 'AND', // optional, defaults to OR 'filter' => [ // optional 'field' => [ 'value', ], ], 'filter_exclude' => [ // optional 'field' => [ 'value', ], ], 'facets' => [ // optional 0 => [ 'type' => 'string', 'field' => 'field' ], 1 => [ 'type' => 'string', 'field' => 'field' ] ], 'spellcheck' => true, // optional 'highlights' => [ // optional 0 => [ 'field' => 'body', 'start' => '<em>', 'stop' => '</em>', 'length' => 50 ] ] ]);
搜索文档将返回以下格式的对象
object(stdClass)[543] public 'facets' => array (size=2) 0 => object(stdClass)[538] public 'buckets' => array (size=6) ... 1 => object(stdClass)[542] public 'buckets' => array (size=3) ... public 'totalCount' => int 79 public 'matches' => array (size=10) 0 => object(Bonnier\WP\Cxense\Parsers\Document)[521] public 'id' => string '551790ba522b4b9427ca947e1b3353e137d78a85' (length=40) public 'siteId' => string '1129402680464567580' (length=19) public 'score' => float 2.0455377 public 'fields' => array (size=10) ... public 'highlights' => array (size=1) ... public 'spellcheck' => array (size=1) 0 => object(stdClass)[663] public 'term' => string 'mor' (length=3) public 'suggestions' => array (size=0) ...
'matches'键包含一个对象数组,这些对象具有通过魔术方法 __get() 直接访问的 'fields' 值。这意味着您可以直接使用指针调用 'fields' 中的任何字段
$objResults->matches[0]->author;
完整的文档结果如下
object(Bonnier\WP\Cxense\Parsers\Document)[710] public 'id' => string '551790ba522b4b9427ca947e1b3353e137d78a85' (length=40) public 'siteId' => string '1129402680464567580' (length=19) public 'score' => float 0.40566906 public 'fields' => array (size=9) 0 => object(stdClass)[715] public 'field' => string 'author' (length=6) public 'value' => string 'i form' (length=6) 1 => object(stdClass)[718] public 'field' => string 'bod-cat' (length=7) public 'value' => string 'Sund graviditet' (length=15) 2 => object(stdClass)[719] public 'field' => string 'bod-cat-top' (length=11) public 'value' => string 'Sundhed' (length=7) 3 => object(stdClass)[720] public 'field' => string 'bod-cat-url' (length=11) public 'value' => string 'http://iform.dk/sundhed/sund-graviditet' (length=39) 4 => object(stdClass)[721] public 'field' => string 'bod-pagetype' (length=12) public 'value' => string 'article' (length=7) 5 => object(stdClass)[722] public 'field' => string 'description' (length=11) public 'value' => string 'Går du med babytanker, har du en fordel, hvis du bor tæt på din mor.' (length=71) 6 => object(stdClass)[723] public 'field' => string 'recs-publishtime' (length=16) public 'value' => string '2015-04-19T22:00:00.000Z' (length=24) 7 => object(stdClass)[724] public 'field' => string 'title' (length=5) public 'value' => string 'Din mor øger dine baby-chancer' (length=31) 8 => object(stdClass)[725] public 'field' => string 'url' (length=3) public 'value' => string 'http://iform.dk/sundhed/sund-graviditet/din-mor-kan-hjaelpe-til-familieforoegelsen' (length=82)
小部件文档
如果输入数组中缺少'widget_id'键,则抛出 WidgetMissingId 异常。
如何获取cxense数据的示例
WidgetDocumentQuery::make() ->addContext('url', get_permalink()) ->setMatchingMode($this->getCxenseTaxonomy()) ->addParameter('pageType', 'article gallery story') ->setCategories(array($this->getCategory())) ->setTags(array($this->getTag())) ->get();
用户'TAX_RECENT'最近查看
此类分类法需要用户浏览器cookie。要从浏览器控制台获取它,您可以使用
cX.getUserId()