为每个帖子更改数据库中的元值的函数

时间:2013-02-27 作者:ElBrm

我在每篇文章中都有一个名为“prijs”的元键。此元键的值由以下结构中的数字组成:2100.00

我想删除元值中的逗号以获得此输出:2100.00

因此,我创建了一个函数,但它不起作用:

add_action(\'wp_insert_post\', \'deleteCommaDB\');
function deleteCommaDB($postID){
    $price_key = \'prijs\';
    $getPrice = get_post_meta($postID, $price_key, true);
    $newPrice = str_replace(array(\',\'), \'\', $getPrice);

    update_post_meta($postID, $price_key, $newPrice);

    return true;
}
我创建了函数deleteCommaDB. 此函数从元键“prijs”获取post元,并替换逗号。此新值保存在变量$newPrice中。接下来要做的是用新值更新post meta。

我做错了什么?

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

你只需要运行一次,但这应该会得到你所有的帖子,然后循环浏览并更新meta。

add_action(\'admin_init\', \'deleteCommaDB\');

function deleteCommaDB(){

    // The Query
    $args = array ( \'posts_per_page\' => -1 );
    $the_query = new WP_Query( $args );

    // The Loop
    while ( $the_query->have_posts() ) :
        $the_query->the_post();

         $price_key = \'prijs\';
        $getPrice = get_post_meta( get_the_ID(), $price_key, true);
        $newPrice = str_replace(array(\',\'), \'\', $getPrice);
        update_post_meta(get_the_ID(), $price_key, $newPrice);

    endwhile;

}
您的函数仅在插入帖子时运行。您可能需要考虑save_post 以及消毒$_POST 首先输入。

SO网友:K Themes

add\\u action(\'wp\\u insert\\u post\',\'deleteComadb\');-此行仅在后期创建时调用函数。

为了更改以前保存的所有帖子,您需要在获取所有帖子的wordpress循环中添加函数。

SO网友:kaiser

始终为正确的工作使用正确的工具str_replace() 以及其他复杂或缓慢的事情。使用PHP或WordPress为此类情况提供的内容:

请注意:还有一个函数money_format().

结束

相关推荐

列出分类法:如果分类法没有POST,就不要列出分类法--取决于定制的POST-META?

这可能很难解释,我不知道是否有解决办法!?我有一个名为“wr\\u event”的自定义帖子类型和一个名为“event\\u type”的分层自定义分类法。自定义帖子类型有一个元框,用于event_date 并且与此帖子类型关联的所有帖子都按以下方式排序event_date. 我在循环中有一个特殊的条件来查询event_date 已经发生了-在这种情况下,它没有显示,但只列在我的档案中。就像你可以使用wp_list_categories() 我编写了一个自定义函数,它以完全相同的方式列出所有分类术语。现在