Определите пользовательское поле с помощью get_option() в WordPress

У меня есть страница пользовательских настроек для определения глобальных переменных. Так что сейчас я могу напечатать свою переменную с помощью:

echo get_option('dealcity');

Но мне нужно иметь возможность использовать результат в заголовках моих страниц с помощью Yoast, однако использование кода настраиваемого поля Yoasts %%cf_dealcity%% не работает. Я думаю, потому что dealcity - это параметр, а не настраиваемое поле. Поэтому я думаю, что мне нужно определить опцию в качестве настраиваемого поля. Я попытался использовать следующее, а затем попытался %%cf_dealercity%%, но это не сработало:

function save_your_fields_meta( $post_id ) {   
$dealercity = get_option('dealcity');
}
add_action( 'save_post', 'save_your_fields_meta' );

1 ответ

Основываясь на фрагменте кода, вы можете просто обновить пользовательские поля в save_post крючок? В вашем примере ничего не произойдет, потому что вы ничего не делаете с $dealcity после того, как вы определите это, и вам нужно сохранить его с update_post_meta():

function chrislovessushi_fields_meta( $post_id ){   
    if( $dealcity = get_option( 'dealcity' ) ){
        // Make sure $dealcity exists, then update the post meta
        update_post_meta( $post_id, 'dealcity', $dealcity );
    }
}
add_action( 'save_post', 'chrislovessushi_fields_meta' );

Также для будущих мозговых конфет, вы можете изменить заголовки страниц с помощью нескольких простых фильтров, таких как the_title для заголовков страниц и / или wp_title для <title> тег:

function chrislovessushi_title_filter( $title, $id = null ) {
    if( is_page() ){
        // Add `dealcity` value before title if this is a page
        $title = get_option('dealcity').' '.$title;
    }
    return $title;
}
add_filter( 'the_title', 'chrislovessushi_title_filter', 10, 2 );
Другие вопросы по тегам