
如何修复XAMPP“服务器证书不包含与服务器名称匹配的ID”错误
wp_set_object_terms ( $object_id, $terms, $taxonomy, $append = false )
wp_set_object_terms: 这个函数用来设置与一个对象相关的术语,例如一个文章或一个自定义文章类型。它接受对象的ID,术语ID的数组,术语的分类法,以及更新对象相关的现有术语的各种选项。
创建术语和分类学关系。
将一个对象(文章、链接等)与一个术语和分类学类型联系起来。如果术语和分类法关系不存在,则创建该关系。如果术语不存在,则创建一个术语(使用lug)。
关系意味着该术语被归入分类法中或属于分类法。一个术语没有意义,除非通过定义它存在于哪个分类法之下,给它提供背景。
function wp_set_object_terms( $object_id, $terms, $taxonomy, $append = false ) { global $wpdb; $object_id = (int) $object_id; if ( ! taxonomy_exists( $taxonomy ) ) { return new WP_Error( 'invalid_taxonomy', __( 'Invalid taxonomy.' ) ); } if ( ! is_array( $terms ) ) { $terms = array( $terms ); } if ( ! $append ) { $old_tt_ids = wp_get_object_terms( $object_id, $taxonomy, array( 'fields' => 'tt_ids', 'orderby' => 'none', 'update_term_meta_cache' => false, ) ); } else { $old_tt_ids = array(); } $tt_ids = array(); $term_ids = array(); $new_tt_ids = array(); foreach ( (array) $terms as $term ) { if ( '' === trim( $term ) ) { continue; } $term_info = term_exists( $term, $taxonomy ); if ( ! $term_info ) { // Skip if a non-existent term ID is passed. if ( is_int( $term ) ) { continue; } $term_info = wp_insert_term( $term, $taxonomy ); } if ( is_wp_error( $term_info ) ) { return $term_info; } $term_ids[] = $term_info['term_id']; $tt_id = $term_info['term_taxonomy_id']; $tt_ids[] = $tt_id; if ( $wpdb->get_var( $wpdb->prepare( "SELECT term_taxonomy_id FROM $wpdb->term_relationships WHERE object_id = %d AND term_taxonomy_id = %d", $object_id, $tt_id ) ) ) { continue; } /** * Fires immediately before an object-term relationship is added. * * @since 2.9.0 * @since 4.7.0 Added the `$taxonomy` parameter. * * @param int $object_id Object ID. * @param int $tt_id Term taxonomy ID. * @param string $taxonomy Taxonomy slug. */ do_action( 'add_term_relationship', $object_id, $tt_id, $taxonomy ); $wpdb->insert( $wpdb->term_relationships, array( 'object_id' => $object_id, 'term_taxonomy_id' => $tt_id, ) ); /** * Fires immediately after an object-term relationship is added. * * @since 2.9.0 * @since 4.7.0 Added the `$taxonomy` parameter. * * @param int $object_id Object ID. * @param int $tt_id Term taxonomy ID. * @param string $taxonomy Taxonomy slug. */ do_action( 'added_term_relationship', $object_id, $tt_id, $taxonomy ); $new_tt_ids[] = $tt_id; } if ( $new_tt_ids ) { wp_update_term_count( $new_tt_ids, $taxonomy ); } if ( ! $append ) { $delete_tt_ids = array_diff( $old_tt_ids, $tt_ids ); if ( $delete_tt_ids ) { $in_delete_tt_ids = "'" . implode( "', '", $delete_tt_ids ) . "'"; $delete_term_ids = $wpdb->get_col( $wpdb->prepare( "SELECT tt.term_id FROM $wpdb->term_taxonomy AS tt WHERE tt.taxonomy = %s AND tt.term_taxonomy_id IN ($in_delete_tt_ids)", $taxonomy ) ); $delete_term_ids = array_map( 'intval', $delete_term_ids ); $remove = wp_remove_object_terms( $object_id, $delete_term_ids, $taxonomy ); if ( is_wp_error( $remove ) ) { return $remove; } } } $t = get_taxonomy( $taxonomy ); if ( ! $append && isset( $t->sort ) && $t->sort ) { $values = array(); $term_order = 0; $final_tt_ids = wp_get_object_terms( $object_id, $taxonomy, array( 'fields' => 'tt_ids', 'update_term_meta_cache' => false, ) ); foreach ( $tt_ids as $tt_id ) { if ( in_array( (int) $tt_id, $final_tt_ids, true ) ) { $values[] = $wpdb->prepare( '(%d, %d, %d)', $object_id, $tt_id, ++$term_order ); } } if ( $values ) { if ( false === $wpdb->query( "INSERT INTO $wpdb->term_relationships (object_id, term_taxonomy_id, term_order) VALUES " . implode( ',', $values ) . ' ON DUPLICATE KEY UPDATE term_order = VALUES(term_order)' ) ) { return new WP_Error( 'db_insert_error', __( 'Could not insert term relationship into the database.' ), $wpdb->last_error ); } } } wp_cache_delete( $object_id, $taxonomy . '_relationships' ); wp_cache_delete( 'last_changed', 'terms' ); /** * Fires after an object's terms have been set. * * @since 2.8.0 * * @param int $object_id Object ID. * @param array $terms An array of object term IDs or slugs. * @param array $tt_ids An array of term taxonomy IDs. * @param string $taxonomy Taxonomy slug. * @param bool $append Whether to append new terms to the old terms. * @param array $old_tt_ids Old array of term taxonomy IDs. */ do_action( 'set_object_terms', $object_id, $terms, $tt_ids, $taxonomy, $append, $old_tt_ids ); return $tt_ids; }
在WordPress中,你可以使用 add_action
函数添加一个钩子函数。钩子函数是在特定事件发生时自动触发的函数。
add_action
函数的第一个参数是钩子名称,第二个参数是要执行的函数名,第三个参数是函数的优先级(可选)。
例如,添加一个在文章保存后执行的钩子函数的代码如下:
function my_save_post_function( $post_ID, $post ) { // 执行你的代码 } add_action( 'save_post', 'my_save_post_function', 10, 2 );
这里, save_post
是钩子名称, my_save_post_function
是要执行的函数名,10是函数的优先级,2是传递给钩子函数的参数数量。
wp_reset_query()
函数用于重置WordPress的查询。在自定义查询或修改查询参数之后,你可能需要使用这个函数来重置到默认的查询。例如:
// 自定义查询 $args = array( 'post_type' => 'product', 'posts_per_page' => 10, ); $custom_query = new WP_Query($args); // 重置查询 wp_reset_query();
创建自定义的WordPress插件需要以下步骤:
使用 get_post
和 get_page
获取单个文章或页面的详细信息:
// 获取文章或页面的ID $post_id = get_the_ID(); // 获取文章或页面的详细信息 $post = get_post($post_id); // 获取文章或页面的标题 $title = $post->post_title; // 获取文章或页面的内容 $content = $post->post_content;
wp_enqueue_script
和 wp_enqueue_style
函数的使用:
wp_enqueue_script()
:此函数位于wp-includes/script-loader.php文件中。它会将JavaScript文件添加到WordPress网站的页脚中。您可以在主题的functions.php文件中调用此函数,以添加自定义的JavaScript文件。wp_enqueue_style()
:此函数位于wp-includes/script-loader.php文件中。它会将CSS文件添加到WordPress网站的部分中。您可以在主题的functions.php文件中调用此函数,以添加自定义的CSS文件。使用 wp_head
和 wp_footer
在主题中添加自定义内容:
wp_head()
:此函数位于wp-includes/general-template.php文件中。它会在文档的部分中输出内容。您可以在主题的header.php文件中调用此函数,以在部分中添加自定义内容。wp_footer()
:此函数位于wp-includes/general-template.php文件中。它会在文档的部分中输出内容。您可以在主题的footer.php文件中调用此函数,以在部分中添加自定义内容。