In the past two days, I have migrated my blog and upgraded it to the latest wordpress 6.4.2. Many problems arose in the process and were solved one by one.
Record it.
Uninstalled several plug-ins and uninstalled the theme I developed: themoon. That solved the problem.
The new server is nginx. Need to be added to the configuration:
location / { try_files $uri $uri/ /index.php?$args; }
Without enabling this function, WordPress cannot install and update plugins.
Tip: "Please wait one minute..."
In fact, that's how it's always been.
All you need to do is log in to the server via FTP, find the .maintenance file in the root directory, delete it, and that's it.
I have always used
global $post; $id=$post->ID;
I just found out today that there is a problem.
If you add a shortcode to the page, and the shortcode outputs a list (such as a list of articles in a certain category), then this method cannot get the page ID.
That is to say, if there is a loop in the page, then the above method cannot obtain the page ID.
List several methods to obtain the page ID:
1.global
Affected by circulation.
global $post; $id=$post->ID;
2,get_the_ID()
Affected by circulation.
$postid = get_the_ID(); echo $postid;
3.get_queried_object_id()
Not affected by circulation. recommend.
$current_id = get_queried_object_id(); echo $current_id;
4.get_queried_object()
Not affected by circulation.
$object = get_queried_object(); $id = $object -> ID; echo $id;
Today’s iteration of form engine:
Support multiple forms on one page;
Supports application in veiws engine, so that various actions can be added to the list rendered by veiws engine.
The view layer and control layer of the form engine are separated.
Add a field for a drop-down selection button.
Since the form engine and views engine were separated from the low-code platform and some reconstruction was done, this iteration has completely made their capabilities beyond the previous version.
I've been stuck on this little problem for a day.
Setting cookies in WordPress is special.It should be written in the theme's functions file and loaded into the init hook.
function custom_set_cookie() { setcookie( 'key', 'value', time() + 3600 * 24, COOKIEPATH, COOKIE_DOMAIN ); } add_action( 'init', 'custom_set_cookie' );
The simplest solution is to add "any" instead of the version number after the conflicting package, so that Flutter will automatically match the appropriate version of the package dependency.
dart_code_metrics: any
I have never understood the paging principle of wordpress lists. I finally figured it out today.
The list and pagination data of wordpress are written in the global parameter: $wp_query. As long as the queried list data is put into this parameter, you can use the_posts_pagination() or get_the_posts_pagination() to display the pagination. As for the page that appears after clicking the pagination, Don't worry, wordpress has already done it.
Code:
global $wp_query;
$wp_query=new WP_Query($arg);
Then, you can use the_posts_pagination() to display pagination under this list.
# integrates Baidu’s Wenxin Qianfan large model into WordPress and compares it with GPT
Last weekend, Baidu’s Wenxin Qianfan model was integrated into WordPress.
1. Basic process:
1. First apply to experience the Wenxin Qianfan large model on Baidu, which requires certification first.
2. After passing, activate the large model, because Baidu's large model is charged for use and is charged by token. You need to have a balance in your account to activate it.
3. Then, create an application so that it has appid, api key and secret key
4. Then, read the documentation and connect the corresponding interface.
Basically, you get the access token through the api key and secret key, and then submit the question and get the answer.
2. Key code
1. Obtain the key code of the 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. Call the key code of Ernie Bot large model
"`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. Call the key code of Ernie Bot Turbo large model
"`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;
}
“`
In the past few days of testing, the performance of Baidu Wenxin Qianfan's large model in Chinese is indeed much better than GPT.
The Chinese level of GPT is the level of "explanatory text".
The Chinese level of Baidu Wenxin Qianfan Large Model is at least better than the "explanatory text".
For the platform CMS I built myself, the membership subscription part has always been "simple to implement". This weekend I restructured this part and developed the core part.
1. Method
Generally speaking, membership subscription mainly includes three parts: membership subscription plan and purchase, member permission control, and member management.
1. For membership subscription plans and purchases
Just prepare to make some extensions based on the existing mall system.
2. For member permission control,
This needs to be mentioned in particular. We are not planning to do it based on a role permission system, but a separate member-controlled system.
Based on the role authority system, members are made into a role series, and each type of member is made into a role in this role series. It sounds reasonable. However, in this case, it is very troublesome to do or use, especially when there is a lot of business, the various logics will be very complicated, and all kinds of confusion will be caused if you are not careful. And it's not flexible enough.
Moreover, in fact, the membership subscription part of many excellent systems is not role-based. Instead, permission control is implemented based on "marks" or orders. Many well-selling membership subscription plug-ins, including WordPress, are done in this way.
Based on "user tags":
In essence, it is the same principle as the character system. It is to define some "marks" of members. Users who purchase the membership subscription plan associated with this "mark" will be "marked with this mark", so that the control of member permissions can be achieved.
Based on order:
Purchase a membership subscription plan and form an order. After payment, the expiration time will be written into the order. Therefore, you can judge based on the order whether the user is a member, what kind of member it is, and whether it has expired. This way you can control member permissions.
I have done an order-based method before, and this time I plan to use "user tags".
There is nothing wrong with being based on orders, but the order system of the platform CMS I am building now supports many order types, making the order model relatively "large". I don't plan to "add weight" to it anymore, so I chose Based on "user tags".
3. Member management
Based on the existing user management extension, we do not plan to do member management alone.
2. Applicable scenarios
1. Basic scenario
The entire product has one or several subscription plans, which users purchase and enjoy membership services.
Define membership tags globally. Each membership tag contains at least three fields: name, slug, and associated subscription plan id.
When a user purchases a subscription plan with a membership mark, the membership mark and expiration time will be written into the user's meta data.
2. Platform/multi-tenant scenario
For platforms and multi-tenant SAAS, there is a very important scenario: the subscription plan provided by the vendor itself.
Define the supplier's membership tag in the supplier's user's meta data. The key of the supplier's membership tag cannot be the same as the key of the global membership tag.
When a user purchases a subscription plan from this provider, the corresponding membership tag and expiration date will be written to the purchasing user's meta data.
This iteration only implements basic scenarios, but it must be able to be extended to platform and multi-tenant scenarios.
3. Determine whether the membership has expired when logging in
When the user logs in, it is judged whether it has expired. If it has expired, update the member mark in the meta data to false and the expiration date to false.
The embedded web page must be an https URL to be displayed, and an http URL is not displayed.
In 2019, I developed a short video social APP for overseas markets. At that time, I did some comparative analysis on the user behaviors of Tiktok and Douyin. Here are some notes from that time.
1. About short videos and live broadcasts
For domestic users, short videos and live broadcasts are both used to create content, so short videos and live broadcasts are both content forms.
For overseas users, short videos and live broadcasts are first and foremost a means of communication. Short videos are first and foremost text messages, except that they send videos. Live broadcasts are first and foremost a phone call, except that they can synchronize video images, whether it is one-to-one or one-to-many.
This is why there are many social apps based on short videos and live communications overseas, while in China, most of them are products that produce short videos and serve to better produce live broadcasts.
2. About fans
For domestic users, fans are money, and the number of followers is the key number used for monetization.
For overseas users, especially European and American users (TikTok's user base is generally younger), fans are friends, and this is a number worth showing off. A large number of younger users on TikTok are generally proud of having many friends.
3. About live broadcast and live broadcast gifts
Domestic live broadcasts are all about content. They are mainly about selling art and goods. The pictures are beautiful, there are all kinds of temptations, and they are very elaborate.
Live streaming overseas, including TikTok, is truly a “communication tool.”
First of all, in terms of the total amount of live broadcasts, it cannot be compared with Douyin.
Then, the most common thing is a woman chatting with a group of men. Picture? Temptation? What is that? Just chatting casually. Such, giving gifts, very rare.
Occasionally, there are performers performing for money, but their quality and popularity are far from those of domestic live broadcasts. The gift-giving situation is also generally incomparable to that of domestic live broadcasts.