编辑元数据不适用于自定义SQL

时间:2016-02-13 作者:mesqueeb

我有一个表单可以将帖子上传到Wordpress,同时我可以在事后编辑元数据之类的内容。但是,使用Wordpress edit\\u post\\u数据可以很好地工作,但自定义SQL查询无法工作。我想知道为什么。

Works : update_post_meta($edit_id, \'lead_t\', $_POST[\'lead_t\']);

Doesn\'t work :

$wpdb->query(
    "UPDATE wp_postmeta (post_id, meta_key, meta_value) 
    VALUES (\'".$edit_id."\', \'lead_t\', \'".$_POST[\'lead_t\']."\') 
    WHERE post_id = \'".$edit_id."\' AND meta_key = \'lead_t\'"
);
有人知道如何对此进行故障排除或调试以找到原因吗?

1 个回复
最合适的回答,由SO网友:Adam 整理而成

请尝试以下操作。。。

global $wpdb;

$wpdb->query(
    "
    UPDATE {$wpdb->prefix}postmeta 
    SET post_id = {$edit_id}, meta_key = \'{$meta_key}\', meta_value= \'{$meta_value}\'
    WHERE post_id = {$edit_id} AND meta_key = \'{$meta_key}\'
    "
);

//or using prepare
$wpdb->query(
    $wpdb->prepare(
        "
        UPDATE {$wpdb->prefix}postmeta 
        SET post_id = %d, meta_key = %s, meta_value = %s
        WHERE post_id = %d AND meta_key = %s
        ",
        $edit_id,
        $meta_key, 
        $meta_value,
        $edit_id,
        $meta_key
    )
);
另外,建议您在wp-config.php 文件以启用调试/错误日志记录。

define(\'WP_DEBUG\', true);
define(\'WP_DEBUG_LOG\', true);
define(\'WP_DEBUG_DISPLAY\', false);
应将错误记录到文件中wp-content/debug.log 如果查询格式不正确,则应包含与查询相关的任何错误。

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果