Search code examples
phpwordpresswoocommercehookproduct

How to automatically use "product title" as focus keyword in rank math?


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’);

Solution

  • 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' );