Добавление информации об авторе вне цикла в Genesis

Я публикую этот вопрос, так как у меня возникли небольшие проблемы с добавлением информации об авторе к моему герою сообщения на моем веб-сайте.

Я использую фреймворк Genesis с Wordpress, поэтому я удалил информацию о сообщении из сообщения и добавил ее обратно в заголовок сообщения. Все это работает, за исключением того, что имя автора больше не отображается, поскольку оно еще не выбрано в цикле сообщений.

    // Remove entry title
    remove_action( 'genesis_entry_header', 'genesis_do_post_title' );
    // Remove post info
    remove_action( 'genesis_entry_header', 'genesis_post_info', 12 );
    // Add page title
    add_action( 'hero-info', 'genesis_do_post_title' );
    // Add page info
    add_action( 'hero-info', 'genesis_post_info', 12 );

Чтобы иметь возможность добавить информацию об авторе сообщения обратно в герое сообщения, я просмотрел stackoverflow и нашел ссылку, где OP смог исправить это, создав для него шорткод и запустив его в герое.

function author_shortcode() {
    global $post;
    $author_id=$post->post_author;
    the_author_meta( 'display_name', $author_id );
}
add_shortcode('author', 'author_shortcode');

Этот шорткод [автор] затем добавляется в

add_filter( 'genesis_post_info', 'custom_post_info' );
function custom_post_info( $post_info ) {
    if ( is_archive() || is_home() ) {
        $post_info = __( 'Article by [author] [post_author_posts_link] on [post_date] - [post_comments zero="Leave a Comment" one="1 Comment" more="% Comments" hide_if_off="disabled"]', 'tcguy' );
        return $post_info;
    }
}

Теперь это результат: http://imgur.com/a/6lX5J Он показан в неправильное место почему-то. Кто-нибудь знает, как это может быть?

Сайт можно найти здесь: http://websforlocals.com/business/

Надеюсь, что я дал достаточно информации, и что кто-то с такой же проблемой может помочь.


person Community    schedule 06.11.2016    source источник
comment
Это проблема в вашем коде регистрации шорткода, поэтому ваше имя автора отображается в начале сообщения, а не в том месте, где у вас есть шорткод. Прочтите мой ответ ниже для получения дополнительной информации.   -  person Mohsin    schedule 08.11.2016


Ответы (1)


Это проблема в вашем шорткоде, регистрирующем php-код.

При добавлении короткого кода мы не должны ничего повторять, так как в этом случае он будет отображаться не в том месте, где мы хотим, а в верхней части содержимого публикации.

Поэтому всегда возвращайте вывод в функции короткого кода, а затем повторяйте функцию короткого кода.

Теперь в WordPress есть соглашение для функций, которые повторяют результат и возвращают результат, то есть the_author_meta против get_the_author_meta (первая функция, которую вы используете, будет отображать/отображать результат, однако функции get_ будут возвращать значения).

Нам нужно использовать get_the_author_meta вместо the_author_meta в вашем блоке регистрации шорткода, и это решит вашу проблему с отображением местоположения.

function author_shortcode() {
global $post;
$author_id=$post->post_author;
return get_the_author_meta( 'display_name', $author_id );
}
add_shortcode('author', 'author_shortcode');
person Mohsin    schedule 08.11.2016