wordpress批量复制修改文章键值价格参数(无需插件实现在主题文件挂载自定义php页面)
functions.php
直接在functions.php文件加入如下代码即可,挂载my-custom-page.php,然后在主题的同目录文件夹下创建my-custom-page.php
/*后台添加一键修改文章价格*/
add_action('admin_menu', 'my_custom_menu');
function my_custom_menu() {
add_menu_page(
'My Custom Page', // 页面标题
'一键修改文章价格', // 菜单标题
'manage_options', // 权限
'my-custom-page', // 菜单别名
'my_custom_page_html', // 回调函数
'dashicons-admin-generic', // 图标
4 // 位置
);
}
function my_custom_page_html() {
include 'my-custom-page.php'; // 引入你的自定义页面
}
my-custom-page.php
<?php
// 确保这个文件只被直接访问
if (!defined('ABSPATH')) {
exit; // Exit if accessed directly
}
if (isset($_POST['submit_id'])) {
global $wpdb;
$post_id = intval($_POST['post_id']); // 获取文章 ID,并确保其为整数
// 查询指定文章的 posts_zibpay 的 meta_value
$meta_value_zibpay = $wpdb->get_var(
$wpdb->prepare(
"SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` = %d AND `meta_key` = 'posts_zibpay'",
$post_id
)
);
// 查询指定文章的 zibpay_price 的 meta_value
$meta_value_price = $wpdb->get_var(
$wpdb->prepare(
"SELECT `meta_value` FROM `wp_postmeta` WHERE `post_id` = %d AND `meta_key` = 'zibpay_price'",
$post_id
)
);
if ($meta_value_zibpay !== null) {
// 更新所有文章的 posts_zibpay 的 meta_value
$sql_zibpay = "
UPDATE `wp_postmeta`
SET `meta_value` = %s
WHERE `meta_key` = 'posts_zibpay'
";
$result_zibpay = $wpdb->query($wpdb->prepare($sql_zibpay, $meta_value_zibpay));
if ($result_zibpay !== false) {
echo '<div class="updated"><p>所有文章的 posts_zibpay 键值已成功更新!</p></div>';
} else {
echo '<div class="error"><p>更新 posts_zibpay 失败,请重试。</p></div>';
}
} else {
echo '<div class="error"><p>未找到指定文章的 posts_zibpay meta 值。</p></div>';
}
if ($meta_value_price !== null) {
// 更新所有文章的 zibpay_price 的 meta_value
$sql_price = "
UPDATE `wp_postmeta`
SET `meta_value` = %s
WHERE `meta_key` = 'zibpay_price'
";
$result_price = $wpdb->query($wpdb->prepare($sql_price, $meta_value_price));
if ($result_price !== false) {
echo '<div class="updated"><p>所有文章的 zibpay_price 键值已成功更新!</p></div>';
} else {
echo '<div class="error"><p>更新 zibpay_price 失败,请重试。</p></div>';
}
} else {
echo '<div class="error"><p>未找到指定文章的 zibpay_price meta 值。</p></div>';
}
}
?>
<div class="wrap">
<h1>根据文章 ID 更新所有文章的 posts_zibpay 和 zibpay_price 键值</h1>
<form method="post">
<label for="post_id">输入文章 ID:</label>
<input type="number" name="post_id" id="post_id" required>
<input type="submit" name="submit_id" value="更新键值" class="button button-primary">
</form>
</div>
<?php
// 创建查询参数
$args = array(
'post_type' => 'post', // 查询文章类型
'posts_per_page' => 5, // 最新 5 篇文章
);
// 创建查询参数
$args = array(
'post_type' => 'post', // 查询文章类型
'posts_per_page' => 5, // 最新 5 篇文章
);
// 创建 WP_Query 对象
$query = new WP_Query( $args );
// 检查是否有文章
if ( $query->have_posts() ) {
echo '<ul>'; // 开始列表
while ( $query->have_posts() ) {
$query->the_post(); // 设置当前文章为循环中的文章
echo '<li>';
echo 'ID: ' . get_the_ID() . ' - '; // 显示文章 ID
echo '<a href="' . get_edit_post_link() . '">' . get_the_title() . '</a>'; // 显示文章标题的编辑链接
echo '</li>';
}
echo '</ul>'; // 结束列表
} else {
echo '没有找到文章。'; // 如果没有文章则显示消息
}
// 重置查询
wp_reset_postdata();
?>
<br><br><br>
<font color="red" style="font-size:18px;">1、使用前强烈建议备份数据库数据,避免意外情况发生!</font>
<br><br><br>
<font color="green" style="font-size:18px;">2、改好一篇文章的价格,然后在输入这篇文章的id即可,所有文章都会复刻它的价格设置,以及价格字段!不影响其他设置!</font>