Log in

Terzijde

Tijd:2023/12/09

WordPress-migratie en -upgrade: los problemen op zoals witte pagina's, 404, pseudo-statisch, mislukte installatie van plug-ins, mislukte update van plug-ins en ontoegankelijkheid, enz.

In de afgelopen twee dagen heb ik mijn blog gemigreerd en geüpgraded naar de nieuwste WordPress 6.4.2. Tijdens het proces ontstonden veel problemen, die stuk voor stuk werden opgelost.

Neem het op.

witte pagina's

Diverse plug-ins gedeïnstalleerd en het door mij ontwikkelde thema verwijderd: themoon. Dat loste het probleem op.

404 en pseudostatisch

De nieuwe server is nginx. Moet aan de configuratie worden toegevoegd:

locatie / { try_files $uri $uri/ /index.php?$args }

Installatie van de plug-in is mislukt en de update is ook mislukt

1. Stel de machtigingen van de map met plug-ins in op 777, en stel overigens de machtigingen van de map Thema's in op 777.

2. Schakel PHP-functies in PHP.ini in: chmod

Zonder deze functie in te schakelen kan WordPress geen plug-ins installeren en bijwerken.

Nadat de plug-in-update mislukte, werd de hele site ontoegankelijk.

Tip: "Een ogenblik geduld a.u.b...."

Eigenlijk is dat altijd zo geweest.

Het enige wat u hoeft te doen is inloggen op de server via FTP, het .maintenance-bestand in de hoofdmap zoeken, het verwijderen, en dat is alles.

tags:
Tijd:2023/11/06

Neem het op, wordpress, haal de pagina-ID op

Ik heb altijd gebruikt

globale $post; $id=$post->ID;

Ik heb vandaag pas ontdekt dat er een probleem is.

Als u een shortcode aan de pagina toevoegt en de shortcode een lijst oplevert (zoals een lijst met artikelen in een bepaalde categorie), kan deze methode de pagina-ID niet ophalen.

Dat wil zeggen: als er een lus op de pagina zit, kan de bovenstaande methode de pagina-ID niet verkrijgen.

Noem verschillende methoden om de pagina-ID te verkrijgen:

1. mondiaal

Beïnvloed door de bloedsomloop.

globale $post; $id=$post->ID;

2,get_the_ID()

Beïnvloed door de bloedsomloop.

$postid = get_the_ID(); echo $postid;

 

3.get_queried_object_id()

Wordt niet beïnvloed door de bloedsomloop. aanbevelen.

$current_id = get_queried_object_id(); echo $current_id;

4.get_queried_object()

Wordt niet beïnvloed door de bloedsomloop.

$object = get_queried_object(); $id = $object -> ID;
tags:
Tijd:2023/09/02

vorm vandaag de dag een engine-iteratie

De huidige iteratie van de formulierengine:

Ondersteuning van meerdere formulieren op één pagina;

Ondersteunt toepassing in de veiws-engine, zodat verschillende acties kunnen worden toegevoegd aan de lijst die door de veiws-engine wordt weergegeven.

De weergavelaag en de controlelaag van de formulierengine zijn gescheiden.

Voeg een veld toe voor een vervolgkeuzeknop.

 

Omdat de formulier-engine en views-engine gescheiden waren van het low-code-platform en er enige reconstructie was uitgevoerd, heeft deze iteratie hun mogelijkheden volledig verder uitgebreid dan de vorige versie.

Tijd:2023/08/31

Voor de goede orde: het instellen van cookies in WordPress is bijzonder.

Ik zit al een dag met dit kleine probleem vast.

Het instellen van cookies in WordPress is bijzonder.Het moet in het functiesbestand van het thema worden geschreven en in de init-hook worden geladen.

function custom_set_cookie() {setcookie('sleutel', 'waarde', tijd() + 3600 * 24, COOKIEPATH, COOKIE_DOMAIN } add_action('init', 'custom_set_cookie');
tags:
Tijd:2023/08/01

flutter package依赖冲突的问题(Because xx depends on)

最简单的解决方法,就是在冲突的package后边不加版本号,而是加上“any”,这样flutter会自动匹配合适的包依赖的版本。

dart_code_metrics: any

 

tags:
Tijd:2023/07/29

the_posts_pagination() ——wordpress的分页原理


一直没搞懂wordpress列表的分页原理。今天终于搞明白了。

wordpress的列表和分页数据都写在全局参数:$wp_query中,只要把查询出来的列表数据放进这个参数,就可以用the_posts_pagination() 或get_the_posts_pagination()将分页显示出来,至于点击分页后出现的页面,不用管,wordpress都做好了。

Code:

global $wp_query; 

 $wp_query=new WP_Query($arg);

然后,就可以在这个列表下边用the_posts_pagination()显示分页了。



tags:
Tijd:2023/07/26

AIGC:把百度的文心千帆大模型整合进wordpress,并对比GPT

# 把百度的文心千帆大模型整合进wordpress,并对比GPT

上周末,把百度的文心千帆大模型整合进了wordpress。
一、基本的过程:
1、先在百度申请体验文心千帆大模型,需要先认证。

2、通过后,开通一下大模型,因为百度的大模型使用是收费的,按token收费,需要你的账户中有余额才能开通。

3、然后,创建一个应用,这样就有了appid、api key和secret key

4、然后,再看文档,接相应的接口。
基本就是通过api key和secret key获得access token,然后再提交问题,获取答案。

二、关键代码
1、获取access token的关键代码

“`php
private function getAccessToken(){
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => “https://aip.baidubce.com/oauth/2.0/token?client_id=”.$this->client_id.”&client_secret=”.$this->client_secret.”&grant_type=client_credentials”,
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => ‘POST’,
CURLOPT_HTTPHEADER => array(
‘Content-Type: application/json’,
‘Accept: application/json’
),

));
$response = curl_exec($curl);
curl_close($curl);
$rtn = json_decode($response);
return $rtn->access_token;
}
“`

2、调用Ernie Bot大模型的关键代码

“`php
public function runErnieBot($message) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => “https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/completions?access_token={$this->getAccessToken()}”,
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => ‘POST’,
CURLOPT_POSTFIELDS =>$message,
CURLOPT_HTTPHEADER => array(
‘Content-Type: application/json’
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
“`

3、调用Ernie Bot Turbo大模型的关键代码

“`php
public function runErnieBotTurbo($message) {
$curl = curl_init();
curl_setopt_array($curl, array(
CURLOPT_URL => “https://aip.baidubce.com/rpc/2.0/ai_custom/v1/wenxinworkshop/chat/eb-instant?access_token={$this->getAccessToken()}”,
CURLOPT_TIMEOUT => 30,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CUSTOMREQUEST => ‘POST’,
CURLOPT_POSTFIELDS =>$message,
CURLOPT_HTTPHEADER => array(
‘Content-Type: application/json’
),
));
$response = curl_exec($curl);
curl_close($curl);
return $response;
}
“`

这几天的测试,百度文心千帆大模型在中文方面的表现的确比GPT好多了。
GPT的中文水平,就是“说明文”的水平。
百度文心千帆大模型的中文水平,至少也比“说明文”好一些。

Tijd:2023/07/17

会员订阅模块的迭代

 

 

对我自己做的平台型CMS,会员订阅这部分一直是“简单实现”。这个周末重新对这部分做了架构,并把核心部分开发完成。

一、方式

会员订阅,一般来说,主要包含:会员订阅计划及购买、会员权限控制、会员管理三个部分。

1、对于会员订阅计划及购买

准备基于已有的商城系统做一些扩展即可。

2、对于会员权限控制,

这个得特别说一下,不打算基于角色权限系统来做,而是单独做一个会员控制的系统。

基于角色权限系统,把会员做成一个角色系列,把每一种会员做成这个角色系列中的角色。听起来,似乎很合理。但是,这样的话,无论做起来还是用起来,都特别麻烦,尤其是业务比较多的时候,各种逻辑会很复杂,一不小心就会造成各种混乱。并且也不够灵活。

而且,实际上,很多优秀的系统的会员订阅部分,也都不会基于角色。而是基于“标记”或者基于订单来实现权限控制。包括wordpress的很多卖得很好的会员订阅类的插件都是这样来做的。

基于“用户标记”:

本质上,其实和角色系统原理一样。就是定义一些会员的“标记”,购买了与这个“标记”关联的会员订阅计划的用户会被“打上这个标记”,这样就能实现会员权限的控制。

基于订单:

购买会员订阅计划,形成订单,支付后,将到期时间写入订单。所以,就可以根据订单来判断用户是否是会员、是哪种会员,以及是否已过期。这样就可以对控制会员权限。

 

之前曾经做过基于订单的方式,这次打算基于”用户标记“。

基于订单并没有什么不好,只不过,我现在做的这个平台型CMS的订单系统支持的订单类型比较多,造成订单模型比较”庞大“,不打算再给它”增加体重“了,所以选择基于”用户标记“。

3、会员管理

基于现有的用户管理扩展,不打算单独做会员管理。

 

二、适用场景

1、基本场景

整个产品有一个或几个订阅计划,用户购买,享受会员服务。

全局定义会员标记,每一种会员标记至少包含name、slug、关联的订阅计划id,三个字段。

当用户购买了某个会员标记的订阅计划,此会员标记和到期时间就会被写入此用户的meta数据中。

2、平台/多租户场景

对于平台和做多租户SAAS,有一个很重要的场景:供应商自己提供的订阅计划。

在供应商的用户的meta数据中定义此供应商的会员标记,供应商的会员标记的key和全局会员标记的key不能相同。

当用户购买了此供应商的订阅计划后,相应的会员标记和到期日期就会被写入到购买用户的meta数据中。

这次的迭代只实现基本场景即可,但要能扩展到平台和多租户场景。

 

三、登录时判断会员是否到期

用户登录时判断是否到期,如果到期,更新meta数据中的会员标记为false、到期日期为false。

 

Tijd:2023/07/12

iframe嵌入网页不显示的问题

嵌入的网页必须是https的url才能显示,http的url不显示。

tags:
Tijd:2023/06/28

tiktok和抖音用户行为对比

2019年做了一个出海的短视频社交APP。当时对tiktok和抖音用户行为做了一些对比分析。以下是当时的一些笔记。

1、关于短视频和直播

对于国内用户,短视频和直播都是用来做内容的,所以,短视频和直播都是内容形式。

对于海外用户,短视频和直播,首先是通讯方式,短视频首先是短信的概念,只不过发的是视频。直播,首先是打电话的概念,只不过可以同步视频画面,无论是一对一还是一对多。

这也是为什么海外会有很多基于短视频和直播通讯的社交APP,而国内,大多是制作短视频和为更好地做直播节目而服务的产品。

 

2、关于粉丝

对于国内用户来说,粉丝就是钱,关注量就是用来变现的关键数字。

对于海外用户来说,尤其对欧美用户来说(tiktok的用户群普遍年龄比较小),粉丝就是朋友,这是一个很值得炫耀的数字,tiktok上大量的年龄比较小的用户普遍以有很多朋友为傲。

3、关于直播和直播礼物

国内的直播都是做内容的。主要就是卖艺和卖商品。画面精美、各种诱惑、费尽心机。

海外的直播,包括tiktok,真的就是“通讯工具”。

首先,是直播总量上,和抖音没法比。

然后,最常见的就是一个女的和一群男的瞎聊天,画面?诱惑?那是啥?就是随便聊个天。这样的,送礼物,极少。

偶尔也有卖艺的,但其质量、人气等和国内的直播相去甚远。送礼物的情况,整体上也和国内的直播没法比。

 



copyright © www.lyustu.com alle rechten voorbehouden.
Thema: TheMoon V3.0. Auteur: neo yang