WordPress内爆&wp_插入_POST问题

时间:2015-06-17 作者:Radfold Lexus

就在几天前,我开始了我新的基于wordpress的网站的工作。

我有一个插件,它提供了一个汽车数据库。我想通过从这个插件获取信息来自动填充我的自定义字段和分类法。

因此,我在函数中创建了一个自定义函数。php。我从car的数据库插件中输入了一个ID,当我发布或更新帖子时,我的函数会自动填充我的字段(wp\\u insert\\u post)。一切似乎都很好,但。。。

在我的函数中,我有以下代码:

if ( isset( $cardet[\'marks\'] ) )
wp_set_object_terms( $post_id, implode(\', \', $cardet["marks"]), \'mark\' );
此函数的作用是什么?它只需从$cardet[“marks”]中获得3-4个不同的汽车标记,然后将其内爆。这仅适用于分类法。

So, after I click publish or update the post:

没关系,这是“编辑后”页面中的样子。创建了3个不同的术语。

works fine

这就是我的问题。当我转到我的分类页面时,我发现:它只创建了一个术语:

only 1 term, why?

我真的需要你的帮助。我需要有不同的条款。无法找到此问题的解决方案。

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

第二个参数为wp_set_object_terms() 接受数组、整数或字符串。

数组/int/string)(必需)术语的slug或id(例如类别或标记id)将替换此分类法中所有现有的相关术语。要清除或删除对象中的所有术语,请传递空字符串或NULL。整数被解释为标记ID 警告:某些函数可能会将term\\u id作为字符串返回,这些字符串将被解释为由数字字符组成的段塞!

创建阵列($cardet["marks"]) 但是后来implode() 信息技术当你implode() 如果将该数组转换为逗号分隔的字符串wp_set_object_terms() 解释为单个值。wp_set_object_terms() 不会中断逗号上的字符串并为您创建多个术语,但解决方案很简单,因为您添加了一个中断内容的步骤。删除该步骤并将阵列传递给wp_set_object_terms().

if ( isset( $cardet[\'marks\'] ) )
    wp_set_object_terms( $post_id, $cardet["marks"], \'mark\' );
Codex中的示例代码正是这样做的,但ID:

// An array of IDs of categories we want this post to have.
$cat_ids = array( 6, 8 );

/*
 * If this was coming from the database or another source, we would need to make sure
 * these where integers:

$cat_ids = array_map( \'intval\', $cat_ids );
$cat_ids = array_unique( $cat_ids );

 */

$term_taxonomy_ids = wp_set_object_terms( 42, $cat_ids, \'category\' );
如果$cardet["marks"] 请提供用户提供的数据sanitize 请在使用前使用它。

SO网友:unknowndomain

内爆使你的阵型变成这样array( \'Audi\', \'BMW\', \'Mercedes-Benz\' ) 转换为一个字符串,该字符串由函数的第一个参数中设置的分隔符分隔,在本例中, 逗号和空格。在某种程度上,您可以将一个数组从此转换为CSV。结果是:Audi, BMW, Mercedes-Benz.

WordPress的工作方式是查找现有术语(在该分类法中),如果不存在,则创建一个新术语。。。

WordPress Codex 它说术语可以作为数组、整数或字符串提供,但是我认为整数和字符串选项可能是一次添加一个术语,我不认为它会重新分解字符串,更重要的是,这是一个无意义的过程,当它获取数组时,会内爆和分解数组,而这正是您的$cardet[\'marks\'] 变量

结束

相关推荐

Custom Taxonomy Breaks Pages

我有一个名为“行业”的自定义分类法,我想在自定义帖子类型“网站设计”上使用它。它适用于预期的帖子类型,但其他页面会被破坏。我根据修改了404模板this question, 当我尝试转到/关于页面时,在打印的第一部分中发现了这一点:WP_Query Object ( [query] => Array ( [industry] => about ) [query_vars] => Array ( [industry]

WordPress内爆&wp_插入_POST问题 - 小码农CODE - 行之有效找到问题解决它

WordPress内爆&wp_插入_POST问题

时间:2015-06-17 作者:Radfold Lexus

就在几天前,我开始了我新的基于wordpress的网站的工作。

我有一个插件,它提供了一个汽车数据库。我想通过从这个插件获取信息来自动填充我的自定义字段和分类法。

因此,我在函数中创建了一个自定义函数。php。我从car的数据库插件中输入了一个ID,当我发布或更新帖子时,我的函数会自动填充我的字段(wp\\u insert\\u post)。一切似乎都很好,但。。。

在我的函数中,我有以下代码:

if ( isset( $cardet[\'marks\'] ) )
wp_set_object_terms( $post_id, implode(\', \', $cardet["marks"]), \'mark\' );
此函数的作用是什么?它只需从$cardet[“marks”]中获得3-4个不同的汽车标记,然后将其内爆。这仅适用于分类法。

So, after I click publish or update the post:

没关系,这是“编辑后”页面中的样子。创建了3个不同的术语。

works fine

这就是我的问题。当我转到我的分类页面时,我发现:它只创建了一个术语:

only 1 term, why?

我真的需要你的帮助。我需要有不同的条款。无法找到此问题的解决方案。

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

第二个参数为wp_set_object_terms() 接受数组、整数或字符串。

数组/int/string)(必需)术语的slug或id(例如类别或标记id)将替换此分类法中所有现有的相关术语。要清除或删除对象中的所有术语,请传递空字符串或NULL。整数被解释为标记ID 警告:某些函数可能会将term\\u id作为字符串返回,这些字符串将被解释为由数字字符组成的段塞!

创建阵列($cardet["marks"]) 但是后来implode() 信息技术当你implode() 如果将该数组转换为逗号分隔的字符串wp_set_object_terms() 解释为单个值。wp_set_object_terms() 不会中断逗号上的字符串并为您创建多个术语,但解决方案很简单,因为您添加了一个中断内容的步骤。删除该步骤并将阵列传递给wp_set_object_terms().

if ( isset( $cardet[\'marks\'] ) )
    wp_set_object_terms( $post_id, $cardet["marks"], \'mark\' );
Codex中的示例代码正是这样做的,但ID:

// An array of IDs of categories we want this post to have.
$cat_ids = array( 6, 8 );

/*
 * If this was coming from the database or another source, we would need to make sure
 * these where integers:

$cat_ids = array_map( \'intval\', $cat_ids );
$cat_ids = array_unique( $cat_ids );

 */

$term_taxonomy_ids = wp_set_object_terms( 42, $cat_ids, \'category\' );
如果$cardet["marks"] 请提供用户提供的数据sanitize 请在使用前使用它。

SO网友:unknowndomain

内爆使你的阵型变成这样array( \'Audi\', \'BMW\', \'Mercedes-Benz\' ) 转换为一个字符串,该字符串由函数的第一个参数中设置的分隔符分隔,在本例中, 逗号和空格。在某种程度上,您可以将一个数组从此转换为CSV。结果是:Audi, BMW, Mercedes-Benz.

WordPress的工作方式是查找现有术语(在该分类法中),如果不存在,则创建一个新术语。。。

WordPress Codex 它说术语可以作为数组、整数或字符串提供,但是我认为整数和字符串选项可能是一次添加一个术语,我不认为它会重新分解字符串,更重要的是,这是一个无意义的过程,当它获取数组时,会内爆和分解数组,而这正是您的$cardet[\'marks\'] 变量

相关推荐

Custom Taxonomy Category link

我似乎在这里转圈转圈,我认为缺乏词汇或不知道我在寻找什么是造成我问题的原因。我有一个自定义的帖子类型projects 并有一个分类法来反映这一点当尝试在菜单中添加此帖子类型的类别链接时,它会在站点上链接为域。com/类别/自定义\\u类别理想情况下,我希望URL为:域。com/projects/custom\\u cat谁能给我指一下正确的方向吗。非常感谢!Edit:我想我展开了一个问题,创造了另一个问题,我取代了: register_taxonomy( \'category\', \'project\'