как поставить & quot; редактировать & quot; ссылка под каждым отрывком в WordPress?

В блоге, который я создал, есть ссылка на редактирование внизу каждого поста, когда вы просматриваете живой сайт, когда вы вошли в систему как администратор.

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

Я искал ответ по всему Google, но ничего не могу найти. Я даже не думаю, что это возможно, учитывая то, что я понимаю об условной логике кодекса WordPress.

Может кто-нибудь, пожалуйста, дайте мне знать, если это возможно или нет, и как решить эту проблему?

== Обновление ==

Хорошо, под руководством Тима, я нашел файл content.php, где создавалась логика выдержки для ролика блога. Вставил предложенный Тимом код так:

<?php if ( true == generate_show_excerpt() ) : ?>
<div class="entry-summary" itemprop="text">
<?php the_excerpt(); ?>
<?php
if(is_user_logged_in() && current_user_can("edit_post", get_the_ID())){
edit_post_link("Edit this post");
}
?>
</div><!-- .entry-summary -->
<?php else : ?>
<div class="entry-content" itemprop="text">
<?php the_content(); ?>
<?php
wp_link_pages( array(
'before' => '<div class="page-links">' . __( 'Pages:', 'generate' ),
'after'  => '</div>',
) );
?>
</div><!-- .entry-content -->
<?php endif; ?>

Просто нужно было убедиться, что он был заключен в вызов функции PHP (т.е.).
Кажется, чтобы работать угощение.

1

Решение

Я даже не думаю, что это возможно, учитывая то, что я понимаю об условной логике кодекса WordPress.

Это определенно возможно! 🙂

В вашей теме у вас, скорее всего, будет home.php, archive.php или же index.php файл, который проходит через цикл ваших сообщений. В этом файле будет код, который выглядит следующим образом:

while(have_posts()): the_post();
// lots of code here to display your post data
endwhile;

Вам нужно будет найти, где именно это разместить, но где-то в этом цикле while будут ваши выдержки (скорее всего, выглядит как get_the_excerpt(); или похожие). После этого вы можете разместить edit_post_link() функция.

Обернутый в условие, чтобы проверить, что пользователь вошел в систему и имеет разрешение на просмотр поста, это выведет на экран ссылку «редактировать пост», которую вы ищете:

if(is_user_logged_in() && current_user_can("edit_post", get_the_ID())){
edit_post_link("Edit this post");
}

Где именно вы разместите это, зависит от вашей темы и от того, как она построена, но, оглядываясь по сторонам, надеюсь, вы сможете найти ее. Не стесняйтесь редактировать свой вопрос и поместите его в часть кода, которую вы пытаетесь редактировать, если он не работает для вас.

Если вы используете основную тему с дочерней темой, вам следует искать соответствующую часть кода в основной теме, и копия файл в вашу дочернюю тему, чтобы внести изменения.

1

Другие решения

Здравствуйте, это простая задача

<a href="<?php get_edit_post_link($post->ID) ?>">Edit</a>

Поместите этот код в условие логина if admin с помощью цикла.

0

В моей конкретной установке WordPress с использованием темы GeneratePress я поместил этот php-код в файл functions.php своей дочерней темы, чтобы решить эту проблему:

if ( ! function_exists( 'generate_posted_on' ) ) :
/**
* Prints HTML with meta information for the current post-date/time and author.
*/
function generate_posted_on()
{
$date = apply_filters( 'generate_post_date', true );
$author = apply_filters( 'generate_post_author', true );

$time_string = '<time class="entry-date published" datetime="%1$s" itemprop="datePublished">%2$s</time>';
if ( get_the_time( 'U' ) !== get_the_modified_time( 'U' ) )
$time_string .= '<time class="updated" datetime="%3$s" itemprop="dateModified">%4$s</time>';

$time_string = sprintf( $time_string,
esc_attr( get_the_date( 'c' ) ),
esc_html( get_the_date() ),
esc_attr( get_the_modified_date( 'c' ) ),
esc_html( get_the_modified_date() )
);

// If our date is enabled, show it
if ( $date ) :
printf( '<span class="posted-on">%1$s</span>',
sprintf( '<a href="%1$s" title="%2$s" rel="bookmark">%3$s</a>',
esc_url( get_permalink() ),
esc_attr( get_the_time() ),
$time_string
)
);
endif;

// If our author is enabled, show it
if ( $author ) :
printf( ' <span class="byline">%1$s</span>',
sprintf( '<span class="author vcard" itemtype="http://schema.org/Person" itemscope="itemscope" itemprop="author">%1$s <a class="url fn n" href="%2$s" title="%3$s" rel="author" itemprop="url"><span class="author-name" itemprop="name">%4$s</span></a></span> %5$s',
__( 'by','generatepress'),
esc_url( get_author_posts_url( get_the_author_meta( 'ID' ) ) ),
esc_attr( sprintf( __( 'View all posts by %s', 'generatepress' ), get_the_author() ) ),
esc_html( get_the_author() ),
edit_post_link( __( 'Edit', 'generate' ), '<span class="edit-link">', '</span>' )
)
);
endif;

}
endif;

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

0