Добавить пользовательские поля в информацию об авторе в wordpress

Я новичок в Wordpress, и я ищу способ добавить настраиваемые поля и отобразить их (без плагина). Я нашел отличный пример в Интернете. Автор добавляет ряд настраиваемых полей, добавляя следующую функцию в файл fuctions.php.

function modify_contact_methods($profile_fields) {

    // Add new fields
    $profile_fields['linkedin'] = 'LinkedIn URL';
    $profile_fields['telephone'] = 'Telephone';        
    return $profile_fields;
}

add_filter('user_contactmethods', 'modify_contact_methods');

Мне удалось успешно добавить такие поля в раздел Контактная информация моей формы регистрации пользователя. Я пытался добавить настраиваемые поля в другие разделы, например в раздел Информация об авторе (где находится биография), но безуспешно. Я думаю, что мне нужно изменить значение user_contactmethods в функции add_filter(...), но я ничего не смог найти.

Я даже не знаю, правильный ли это способ сделать это, но до сих пор это работало -


person INElutTabile    schedule 04.10.2014    source источник


Ответы (1)


Поскольку вы новичок в WordPress, у вас нет знаний о filter и action. Если вы просмотрите список фильтров, вы найдете user_contactmethods здесь.

Как вы можете видеть в разделе Фильтры автора и пользователя, для автора и пользователя есть только 4 фильтра. И мы не можем использовать ни один из них для достижения желаемого результата.

Но каким-то образом мы можем сделать это, добавив еще одно поле в разделе О пользователе, что-то вроде Информация об авторе.

    add_action( 'show_user_profile', 'extra_user_profile_fields' );
    add_action( 'edit_user_profile', 'extra_user_profile_fields' );

    function extra_user_profile_fields( $user ) { ?>
    <h3><?php _e("Author Information", "blank"); ?></h3>

    <table class="form-table">
    <tr>
    <th><label for="author"><?php _e("Author Information"); ?></label></th>
    <td>
    <textarea name="author" id="author" rows="5" cols="10" ><?php echo esc_attr( get_the_author_meta( 'author', $user->ID ) ); ?></textarea><br />
    <span class="description"><?php _e("Please enter Author's Information."); ?></span>
    </td>
    </tr>
    </table>
    <?php }

    add_action( 'personal_options_update', 'save_extra_user_profile_fields' );
    add_action( 'edit_user_profile_update', 'save_extra_user_profile_fields' );

    function save_extra_user_profile_fields( $user_id ) {

    if ( !current_user_can( 'edit_user', $user_id ) ) { return false; }

    update_user_meta( $user_id, 'author', $_POST['author'] );
    }

Таким образом, вы можете добавить столько полей, сколько хотите.

person Rohil_PHPBeginner    schedule 04.10.2014
comment
Вау, это определенно решило мою проблему. Пришло время получить некоторые знания о файлах и действиях! - person INElutTabile; 04.10.2014