我想做的是以编程方式设置woocommerce产品类别。
我所拥有的是名称 test & sample
和帖子ID 9
,因此要设置我使用的产品类别 get_term_by
和 wp_set_object_terms
$name = 'test & sample';
$posid = 9;
//get the term based on name
$term = get_term_by('name', $name, 'product_cat');
//set woocommerce product category
wp_set_object_terms($posid, $term->term_id, 'product_cat');
正如您所看到的,我的问题是 $name
的未标注值。
到目前为止,我所做的是将 &
替换为 &
。
$name = str_replace('&', '&', 'test & sample');
$posid = 9;
//get the term based on name
$term = get_term_by('name', $name, 'product_cat');
//if term does exist,then use set object terms
if(false != $term){
//set woocommerce product category
wp_set_object_terms($posid, $term->term_id, 'product_cat');
}
//if the term name doe not exist I will do nothing
我的问题是如何使用未经授权的名称值或名称来获取名称 如何清理名称值以正确获取术语ID。
答案 0 :(得分:2)
您可以尝试使用$name
清除$name = esc_html( $name );
,然后再将其传递给get_term_by()
。我相信wordpress会将特殊的HTML字符转换为相应的HTML实体,以便在呈现页面时正确显示字符。
示例:
$name = esc_html('test & sample'); // cleanses to 'test & sample'
$posid = 9;
$term = get_term_by('name', $name, 'product_cat');
wp_set_object_terms($posid, $term->term_id, 'product_cat');
答案 1 :(得分:2)
Wordpress通过sanitize_term_field
清理术语名称(在一系列功能之后,它完成了真正的工作)。查看code,我们可以看到name
通过了两个过滤器:'edit_term_name'
和'edit_category_name'
(第1880和1893行)。似乎wordpress不会将任何函数插入到那些过滤器中,因此唯一的转换发生在第1898行; $value = esc_attr($value);
那说你可以使用$name = esc_attr('test & sample');
,这应该可以解决问题;)
答案 2 :(得分:1)
尝试以下方法:
public static void main(String[]args){
final int [] HardCoded = {12, 35, 34, 2, 5};
int UserInput [] = new int[5];
Scanner input = new Scanner(System.in);
System.out.println("Please enter 5 Numbers. ");
System.out.print("Numbers [0]: ");
UserInput [0] = input.nextInt();
System.out.print("Numbers [1]: ");
UserInput [1] = input.nextInt();
System.out.print("Numbers [2]: ");
UserInput [2] = input.nextInt();
System.out.print("Numbers [3]: ");
UserInput [3] = input.nextInt();
System.out.print("Numbers [4]: ");
UserInput [4] = input.nextInt();
System.out.println("Lottery Numbers are: " + HardCoded);
}
}