WordPress教程
模板兔提供专业的wordpress建站教程、wordpress主题开发教程、wordpress插件开发教程、wordpress二次开发教程等。
WordPress教程:有的用户在使用erphpdown插件后,想批量清理一些没有充值记录的僵尸用户,那么如何筛选出这些用户呢?
function add_custom_user_view_link($views) {
global $wpdb, $current_user;
if (current_user_can('edit_users')) {
$custom_link_url = admin_url('users.php?cz=no');
$custom_link_text = '无充值用户';
$views['custom_user_list'] = '<a href="' . esc_url($custom_link_url) . '" class="'.((isset($_REQUEST['cz']) && $_REQUEST['cz'] == 'no')?'current':'').'">' . esc_html($custom_link_text) . '</a>';
}
return $views;
}
add_filter('views_users', 'add_custom_user_view_link...
WordPress教程:wordpress网站更换域名后,除了自己需要在后台改一些设置项的域名外,我们可以通过phpmyadmin执行sql语句来批量替换域名。
替换文章里的图片地址域名
UPDATE wp_posts SET post_content = replace(post_content,'老域名', '新域名');
替换文章属性里的相关媒体地址域名
UPDATE wp_postmeta SET meta_value = replace(meta_value,'老域名', '新域名');
替换用户属性里的头像地址域名
UPDATE wp_usermeta SET meta_value = replace(meta_value,'老域名', '新域名');
替换分类法里的图片地址域名
UPDATE wp_termmeta SET meta_value = replace(meta_value,'老域名', '新域名');
注意:以上数据表的前缀是wp_,具体请根据你自己的表前缀。
WordPress教程:基于erphpdown售卖资源,统计每个分类出售文章销量统计(基本是基于子分类的)。
$sql = "SELECT
t.term_id AS category_id,
t.name AS category_name,
COUNT(a.ice_id) AS total_sales,
SUM(a.ice_price) AS total_prices
FROM
$wpdb->term_taxonomy tt
JOIN
$wpdb->terms t ON tt.term_id = t.term_id
JOIN
$wpdb->term_relationships tr ON tt.term_taxonomy_id = tr.term_taxon...
WordPress教程:在WordPress的WooCommerce订单列表中添加自定义列,可以通过编辑WordPress的functions.php文件或使用自定义的插件来实现。以下是详细的步骤和示例代码,帮助你在WooCommerce订单列表中添加自定义列。
1. 编辑functions.php文件
首先,你需要通过编辑WordPress主题的functions.php文件来添加自定义列。以下是一个示例,展示如何在订单列表中添加两个自定义列:“产品名称”和“产品数量”。
步骤一:添加自定义列标题
在你的主题的functions.php文件中,添加以下代码来定义新的列标题:
function custom_wc_order_columns( $columns ) {
$new_columns = $columns;
$new_columns['product_name'] = __( 'Product Name', 'textdomain' )...
WordPress教程:wordpress里的modown主题开发抖音小程序,但是提交审核时官方说明要加上抖音授权登录,下面模板兔给出相关逻辑代码供参考:
小程序端js:
tt.login({
force: true,
success(res) {
//console.log(`login 调用成功${res.code} ${res.anonymousCode}`);
if (res.code) {
wx.request({
url: app.globalData.appUrl,
data: {
action: "login",
code: res.code,
aff: aff
},
method: 'POST',
header: {
'content-type': 'applicati...
WordPress教程:最近模板兔在给客户开发抖音小程序,大概功能就是付费下载与查看,使用的是wordpress的Modown主题+erphpdown插件来对接头条小程序,下面给出一些核心代码供参考:
小程序端js代码:
tt.request({
url: app.globalData.appUrl,
data: {
erphp_app: app.globalData.appToken,
action: 'user',
page: "***",
userid: tt.getStorageSync('UserId'),
ice_money: that.data.inputRechargeMoney
},
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function ...
WordPress教程:最近模板兔在给客户开发wordpress百度小程序,是基于modown主题与erphpdown插件涉及到百度支付,下面给出对接支付的具体代码供大家参考:
小程序端代码:
swan.request({
url: app.globalData.appUrl,
data: {
***: app.globalData.appToken,
action: 'user',
page: "recharge.bd.do",
userid: swan.getStorageSync('UserId'),
ice_money: that.data.inputRechargeMoney
},
method: 'POST',
header: {
'content-type': 'application/x-www-form-urlencoded'
},
success: function (res) {
...
WordPress教程:我们有时候需要在后台看到文章id、用户id、分类id,那么可以通过一些_row_actions钩子来实现,下面是模板兔提供的一些常见的id显示代码:
function custom_post_actions($actions, $post) {
$actions['id'] = 'ID:'.$post->ID;
return $actions;
}
add_filter('post_row_actions', 'custom_post_actions', 10, 2);
add_filter('page_row_actions', 'custom_post_actions', 10, 2);
add_filter('user_row_actions', 'custom_post_actions', 10, 2);
function custom_category_actions($actions, $category) {
$actions['id'] = 'ID:'.$category->term_id;
return $actions;
}
add_filter('category_row_actions', 'custo...
WordPress教程:在WooCommerce中,woocommerce_payment_complete 钩子是在订单支付过程成功完成后触发的,这通常发生在用户通过支付网关(如PayPal、Stripe等)完成支付操作后。然而,当你在后台手动更改订单状态为“已完成”(例如,通过订单管理界面点击“完成订单”按钮)时,并不会触发 woocommerce_payment_complete 钩子,因为这个动作并不涉及支付过程的完成。
如果你需要在订单状态更改为“已完成”时执行某些操作,你应该使用与订单状态更改相关的钩子,如 woocommerce_order_status_changed。这个钩子会在订单的任何状态更改时触发,包括从任何状态更改为“已完成”。
以下是如何使用 woocommerce_order_status_changed 钩子来检测订单是否已更改为“...
WordPress教程:步骤 1: 创建或修改订单元数据
首先,确保你的订单中包含了你想在列表中显示的自定义数据。这通常涉及到在订单创建或更新时,通过wc_add_order_item_meta函数或其他相关函数来添加元数据。
例如,如果你想在订单中存储一个名为custom_field的自定义字段,你可以在订单创建时添加如下代码:
$order = wc_create_order(); // 假设你已经有了订单对象
$order->add_order_note( '这是订单备注', 0, true ); // 示例:添加订单备注
$order->update_meta_data( 'custom_field', '自定义值' );
$order->save();
步骤 2: 修改My Account订单列表模板
接下来,你需要修改WooCo...
WordPress教程:在WordPress或任何PHP应用中,当你发现使用date("Y-m-d H:i:s")时时间比预期晚了8小时,这通常是因为服务器的时区设置与你的预期不同。PHP中的date()函数会根据date.timezone配置项来返回时间,这个配置项在php.ini文件中设置,或者在你的代码中通过date_default_timezone_set()函数动态设置。
解决步骤
检查服务器时区设置:
你可以通过PHP的date_default_timezone_get()函数来获取当前的时区设置。在你的WordPress插件或主题的某个位置(比如一个函数或模板文件中),添加以下代码来检查当前的时区设置:
echo 'Current timezone is: ' . date_default_timezone_get();
这将输出当前的时区设置,比如UTC...
WordPress教程:我们在做网站时,安全方面也是很重要的一环,今天模板兔就给大家介绍下如何做好安全防护。有以下几点WordPress网站安全防护的建议:
选择合适的SSL证书:
安装有效的SSL证书,确保数据在传输过程中进行加密。
可以选择免费的Let's Encrypt证书或购买商业SSL证书。
强制使用HTTPS:
通过配置网站的服务器或使用插件,强制将所有HTTP请求重定向到HTTPS。
这可以防止用户通过不安全的HTTP连接访问网站。
更新WordPress和插件:
及时更新WordPress核心和安装的插件,确保使用的是最新版本,其中包含了安全修复和漏洞修复。
定期检查并应用所有可用的更新。
使用安全的主机提供商:
选择可...
WordPress教程:在WordPress中,如果你想要获取某篇文章的所有最子级(或称为“直接子级”)分类,你需要首先明确一点:WordPress的分类(Categories)是树状结构的,但文章(Posts)通常只直接关联到一个分类,而不是整个分类树。不过,我们可以通过一些查询技巧来找到与特定文章相关联的分类的所有直接子分类。
以下是一个步骤和示例代码,用于获取与特定文章相关联的分类的所有直接子分类:
获取文章的分类ID:首先,你需要知道这篇文章关联的分类ID。这可以通过查询文章数据或使用WordPress的API函数(如wp_get_post_categories)来完成。
查询直接子分类:使用WordPress的get_categories函数,结合适当的参数,来查询指定分类ID的所有直接子分...
WordPress教程:最近模板兔给一个客户开发一个功能就是文章正文里搜索关键词并标红且自动定位到关键词位置,当有多个相同关键词时,点一下就下移一个关键词。
js代码示例:
var content_search_key = 0;
$("#content_search_key").focus(function(){
document.onkeydown = function() {
if (event.keyCode == 13) {
$("#content_search_btn").click();
}
}
});
$("#content_search_key").blur(function(){
document.onkeydown=null;
});
$("#content_search_btn").click(function(){
var search_key = $.trim($("#content_search_key").val());
if(search_key){
...
WordPress教程:wordpress如何禁止页面复制,然后弹出付费复制提醒,对于一些例如百度app里访问,可能有些代码不生效。以下代码仅供参考:
if( /(baiduboxapp|UCBrowser|MQQBrowser|Quark)/i.test(navigator.userAgent.toLowerCase()) ) {
var o = null;
window.ontouchstart = function() {
o = setTimeout((function() {
layer.open({
type: 1,
area: ['360px', ''],
skin: 'layui-layer-dialog',
title: '付费复制',
resize:false,
scrollbar: false,
shadeClose: true,
content: '<div style="text-align:center"><span style="display:inline-block;width:60px;height:60px;border-radius:50%;border:1px solid #999;margin-botto...