可以进行的一个优化是使用数组作为str\\u replace“find”和“replace”参数,这样可以避免在循环中出现循环。
除此之外,您似乎正在尝试将post\\u标题和post\\u内容保存在post meta中,但这些数据不是存储在post meta中,而是存储在post本身中。
修复拼写错误的函数可能如下所示
function fix_spelling_errors( $post_id ) {
global $wpdb;
$check_fields = array(
"post_title",
"post_content"
);
$replacement_terms = array(
"™™,™",
"®®,®",
" , "
);
$terms_find = array();
$terms_repl = array();
foreach( $replacement_terms as $terms ) {
$term = explode( ",", $terms );
$terms_find[] = trim( $term[0] );
$terms_repl[] = trim( $term[1] );
}
$post = get_post( $post_id );
foreach( $check_fields as $field ) {
if( isset( $post->$field ) ) {
$fixed = str_replace( $terms_find, $terms_repl, $post->$field );
$sql = $wpdb->prepare( "UPDATE {$wpdb->prefix}posts SET `{$field}` = %s WHERE ID = %d", $fixed, $post_id );
$wpdb->query( $sql );
} else {
$to_fix = get_post_meta( $post_id, $field, true );
$fixed = str_replace( $terms_find, $term_repl, $to_fix );
update_post_meta( $post_id, $field, $fixed );
}
}
} );
那么你可以用它作为
fix_spelling_errors( 100 );
其中,100是要修复拼写错误的帖子的ID。
您没有提到您想在何处使用此功能如果您想在从wp admin panel保存帖子时执行此功能,那么您可以使用如下save\\u post操作将其删除
add_action( "save_post", "fix_spelling_errors" );
尽管请注意,如果使用Gutenberg,虽然拼写错误将在数据库中修复,但在编辑帖子时,非固定文本将显示在wp admin/Posts中(您需要刷新页面以显示固定文本)。