如何在 Wordpress 的每个摘录下放置 "edit" link?

how to put "edit" link under each excerpt in Wordpress?

在我创建的博客中,当您以管理员身份登录查看实时站点时,每个 post 底部都有一个编辑 link。

网站客户正在寻找在 'blogroll' 主页上编辑 link 的方法,以便它显示在每个博客 post 摘录的下方。

我找遍了 google 寻找答案,但找不到任何答案。鉴于我对 Wordpress codex 条件逻辑的了解,我什至认为这是不可能的。

有人可以告诉我是否可行以及如何解决这个问题吗?

==更新==

好的,在 Tim 的指导下,我找到了 content.php 为博客卷生成摘录逻辑的位置。像这样插入 Tim 建议的代码:

<?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 函数调用中(即 )。 似乎很管用。

您好,这是一个简单的任务

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

将此代码放入循环中的 if admin 登录条件中..

在我使用 GeneratePress 主题的特定 Wordpress 安装中,我将此 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;

只需要重新定位编辑按钮的位置,因为它现在位于作者旁边,我希望它位于摘录文本下方。

I don't even think it's possible given what I understand about Wordpress codex conditional logic.

绝对有可能! :)

在您的主题中,您很可能会通过 posts。在那个文件中,会有这样的代码:

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

您需要直接找到放置此内容的位置,但 while 循环中的某处将是您的摘录(很可能看起来像 get_the_excerpt(); 或类似内容)。之后就可以放置edit_post_link()函数了。

包装在一个条件中以检查用户是否已登录并有权查看 post,这将打印出您正在寻找的 'edit post' link:

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

放置它的确切位置取决于您的主题及其构建方式,但只要环顾四周,希望您能够找到它。如果问题不适合您,请随意编辑您的问题并将其放入您尝试编辑的代码部分。

如果您使用的是带有子主题的主主题,那么您应该在主主题中查找相关代码部分,然后将文件复制到您的子主题中主题进行更改。