gpt4 book ai didi

php - 在 Wordpress 中发布帖子并根据自定义字段元填充字段时运行 SQL 函数

转载 作者:行者123 更新时间:2023-12-04 03:05:31 39 4
gpt4 key购买 nike

每当我发布帖子时,我都想运行一个 sql 查询。我只是不确定如何将它包装在一个函数中,以及在哪里粘贴该函数以在我单击发布时生效。
以下命令是我需要的,它在 phpMyAdmin-SQL 中成功运行,并且它也正确反射(reflect)在我的 wordpress 后端中。

INSERT INTO  `databasename`.`wp_xxxxxx` (
`id` ,
`name` ,
`item_number` ,
`price` ,
`options_2`) VALUES (
'9', 'xxxx1', 'xxxx2', 'xxxxx3', 'xxxx4'
);

但是,当我每次保存帖子时,如何在我的 functions.php 文件中让它在 PHP 中运行?
我尝试了以下方法,但我确定它是正确的,因为我之后进行了刷新并且没有创建表:
function do_my_stuff($post_ID)  {
mysql_query("INSERT INTO `databasename`.`wp_xxxxx` (
`id` ,
`name` ,
`item_number` ,
`price` ,
`options_2`) VALUES (
'9', 'xxxx1', 'xxxx2', 'xxxx3', 'xxxxx4'");
return $post_ID;
}

add_action('save_post', 'do_my_stuff');

发布帖子时。它实际上是一个需要一些细节的产品。

这是我想要填充的 sql 查询的值。
  • id = 帖子的 postID 编号。
  • 姓名 = 帖子标题
  • item_number = 它应该是一个自定义字段发布元值,即将到来
    从名为“代码”的字段中,目前我通过以下方式在我的单页模板上回显它:

    ID,'代码',真)) echo
    do_shortcode(get_post_meta($post->ID, 'scode', $single = true)); ?>
  • 价格 = 价格,我也通过自定义字段手动输入
    称为“价格”,我目前通过以下方式回显:

  • options_2,我也通过自定义字段值手动输入
    称为“变奏曲”。

  • 这一切都可以这样完成吗?

    也许是这样的:
     INSERT INTO  `databasename`.`wp_cart66_products` (
    `id` ,
    `name` ,
    `item_number` ,
    `price` ,
    `options_2`) VALUES (
    '9', '<?php the_title(); ?>', '<?php if ( get_post_meta($post->ID, 'scode', true) ) echo do_shortcode(get_post_meta($post->ID, 'scode', $single = true)); ?>', '<?php $values = get_post_custom_values("price"); echo $values[0]; ?> ', '<?php $values = get_post_custom_values("variations"); echo $values[0]; ?> '
    );

    请注意,我对 php 或 SQL 并不了解。我花了几个小时试图找到尽可能多的信息来提供可靠的请求。

    最佳答案

    您非常接近,当您将帖子保存到 add_action 时,您定义的函数正在运行。引用,但do_my_stuff()的内容不太正确。

    推荐使用$wpdb访问数据库,甚至引用表的全局变量。例如,如果您使用默认前缀 wp_你会想使用 $wpdb->users对于wp_users table 。如果不是标准表但仍然使用前缀,比如插件,可以使用{$wpdb->prefix}tablename .您还应该使用 $wpdb->prepare帮助确保生成有效的 SQL(以及防止 SQL 注入(inject))。

    试试这个:

    function do_my_stuff($post_ID)  {
    global $wpdb; // the wordpress database object

    // check if this is a revision, if so use the parent post_id
    if ($parent_id = wp_is_post_revision( $post_id )) $post_ID = $parent_id;

    // load the post
    $post = get_post($post_ID);

    // load postmeta values
    $scode = get_post_meta($post_ID, 'scode', true);
    $price = get_post_meta($post_ID, 'price', true);
    $variations = get_post_meta($post_ID, 'variations', true);

    // create sql, use %d for digits, %s for strings
    $sql = $wpdb->prepare("INSERT INTO {$wpdb->prefix}xxxxx (id, name, item_number, price, options_2) VALUES (%d, %s, %s, %s)", $post_ID, $post->post_name, $scode, $price, $variations);

    // run the query
    $wpdb->query($sql);
    }
    // add custom function to run on post save
    add_action('save_post', 'do_my_stuff');

    关于php - 在 Wordpress 中发布帖子并根据自定义字段元填充字段时运行 SQL 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12450019/

    39 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com