Can a user find a child page?

时间:2014-08-21 作者:Cees Timmerman

编辑页面时,用户看到的不是预期的内容,而是以下内容:

[child-pages depth="1" sort_column="post_title"]
用户如何找到该页面以进行编辑?

1 个回复
最合适的回答,由SO网友:birgire 整理而成

这是一个shortcode 您可以在帖子/页面内容中看到。它很可能显示当前页面的所有子页面(最深可达1)。短代码非常常见,但您无法在WordPress帖子/页面编辑器中看到它们的输出,只能在前端通过do_shortcode() 作用

“艰难”的方式:

因此您可以尝试执行以下操作:

访问所有页面(/wp-admin/edit.php?post_type=page) 在后端[child-pages] 短代码以下是“所有页面”表中深度1的子页面:

Child pages of depth 1

“简单”的方法是:

我们可以使用以下插件构建自己的自定义元框,其中显示当前所有子页面的列表。

Demo plugin:

<?php

/**
 * Plugin Name: Child Pages Meta Box
 * Description: Child pages meta box for hierarchial post types
 * Author:      Birgir Erlendsson (birgire)
 * Plugin URI:  http://wordpress.stackexchange.com/a/158636/26350
 * Version:     0.0.2
 */

function wpse_current_child_pages_meta_box()
{
    $post_types = get_post_types(); 
    foreach ( $post_types as $post_type )
    {
        if( is_post_type_hierarchical( $post_type ) )
        {
            add_meta_box(
                \'wpse_child_pages\',
                __( \'Current child pages\' ),
                \'wpse_list_current_child_pages\',
                $post_type,
                \'side\',
                \'low\'
            );
        }
    }
}
add_action( \'add_meta_boxes\', \'wpse_current_child_pages_meta_box\' );

function wpse_list_current_child_pages( $post )
{
    $args = array(
        \'child_of\'      => $post->ID,
        \'echo\'          => 0,
        \'title_li\'      => \'\',
        \'post_type\'     => $post->post_type,
        \'walker\'        => new WPSE_EditLinks
    );
    $style = \'<style>.wpse_childpages li {margin-left: 15px;}</style>\';
    $list = wp_list_pages( $args );
    if( ! $list )
        $list = sprintf( \'<li>%s</li>\', __( \'No child pages found!\' ) );

    printf( \'%s<ul class="wpse_childpages">%s</li>\', $style, $list  );
}

class WPSE_EditLinks extends Walker_Page 
{
    function end_el( &$output, $page, $depth = 0, $args = array() )
    {       
        $edit_url  = admin_url( \'post.php?action=edit&post=\' . $page->ID );
        $edit_link = " <a class=\'dashicons dashicons-edit\' title=\'edit\' href=\'" . esc_url( $edit_url ) . "\' target=\'_blank\'></a> ";
        $output = str_replace( "><a", ">". $edit_link. "<a", $output );
        $output .= "</li>\\n";
    }
}
我们使用的位置wp_list_pages() 做所有艰苦的工作。但是我们只需要添加编辑链接,这就是为什么我们要构建一个定制的页面遍历器。

此插件将自动激活所有后期编辑屏幕上的元框hierarchical 职位类型。

Where do I add this code?

创建此子目录:

/wp-content/plugins/wpse-current-child-pages-metabox/
然后将代码段保存到文件中:

/wp-content/plugins/wpse-current-child-pages-metabox/wpse-current-child-pages-metabox.php
并从后端激活插件:

/wp-admin/plugins.php

Screenshots:

下面是如何工作的屏幕截图:

Current child pages

并且没有子页面:

No child pages found!

现在,您只需单击要修改的相应子页面的编辑链接即可。

更容易;-)

Gist/GitHub:

插件是availabe here on Gist/GitHub.

结束

相关推荐

Multiple pages to show posts

我还没有任何代码或页面可以显示,所以我只能描述我的问题。我有一组帖子,还没有分类或分类。在我的主页上,我有一个“查看所有帖子”链接,链接到View\\u all\\u帖子。php页面。在view\\u all\\u帖子上。php页面我有一个显示所有帖子的简单循环。我只想在view\\u all\\u posts上显示10篇文章。php页面,并将其余的帖子链接到下一页的view\\u all\\u posts页面。因此,view\\u all\\u posts将显示10篇文章,然后有链接显示下一页,其余的链