I found the following code snippet that uses categories as the focus keyword, but I don't know how to change it to include the title in the focus keyword.
function update_product_focus_keywords()
{
$products = get_posts(
array(
‘posts_per_page’ => 100,
‘post_type’ => ‘product’ //replace post with the name of your post type
)
);
foreach ($products as $p) {
$keywords = [];
if (get_the_terms($p->ID, ‘product_cat’)) {
foreach(get_the_terms($p->ID, ‘product_cat’) as $term) {
$keywords[] = strtolower($term->name);
}
update_post_meta(
$p->ID,
‘rank_math_focus_keyword’,
implode(“, “, array_unique($keywords))
);
}
}
}
add_action(‘init’, ‘update_product_focus_keywords’);
Function to automatically update the focus keyword with the post title, if no focus keyword is set Please try this one.
function update_focus_keywords() {
$posts = get_posts(array(
'posts_per_page' => -1,
'post_type' => 'product' // Replace post with the name of your post type
));
foreach($posts as $p){
// Checks if Rank Math keyword already exists and only updates if it doesn't have it
$rank_math_keyword = get_post_meta( $p->ID, 'rank_math_focus_keyword', true );
if ( ! $rank_math_keyword ){
update_post_meta($p->ID,'rank_math_focus_keyword',strtolower(get_the_title($p->ID)));
}
}
}
add_action( 'init', 'update_focus_keywords' );