wordpress - 如何 Hook page_attributes_meta_box 以更改显示 "Parent"选项?

标签 wordpress hook

在 WP 管理面板上有带有“父”下拉列表的“属性”元数据框。 我需要更改排序参数并仅显示父帖子。 如果我更改 native WP 文件 meta-boxes.php621,我可能会这样做。以下代码:

$dropdown_args = array(
    'post_type'        => $post->post_type,
    'exclude_tree'     => $post->ID,
    'selected'         => $post->post_parent,
    'name'             => 'parent_id',
    'show_option_none' => __('(no parent)'),
    //Remove existing sort
    //'sort_column'      => 'menu_order, post_title',
    'echo'             => 0,
    //Add my options
    'parent'           => 0,
    'sort_order'       => 'DESC',
    'sort_column'      => 'post_date',
);

使用这一切都很完美。但我需要钩住它。我已经创建了 actiont 来执行此操作,但它不起作用:

add_action('page_attributes_meta_box', 'custome_page_attributes_meta_box');
function custome_page_attributes_meta_box($post) {
    $post_type_object = get_post_type_object($post->post_type);
    if ( $post_type_object->hierarchical ) {
        $dropdown_args = array(
            'post_type'        => $post->post_type,
            'exclude_tree'     => $post->ID,
            'selected'         => $post->post_parent,
            'name'             => 'parent_id',
            'show_option_none' => '(no parent)',
            'echo'             => 0,
            'sort_order'       => 'DESC',
            'sort_column'      => 'post_date',
            'parent'           => 0
        );

        $dropdown_args = apply_filters( 'page_attributes_dropdown_pages_args', $dropdown_args, $post );
        $pages = wp_dropdown_pages( $dropdown_args );
        if ( ! empty($pages) ) {
        ?>
            <p><strong><?php _e('Parent') ?></strong></p>
            <label class="screen-reader-text" for="parent_id"><?php _e('Parent') ?></label>
            <?php echo $pages; ?>
        <?php
        } // end empty pages check
    } // end hierarchical check.
}

我做错了什么?

最佳答案

您正在尝试 hook变成一个不存在的 Action 。
在核心文件中,您必须查找 do_actionapply_filters
在这种情况下,有一个正是您所需要的:

add_filter( 'page_attributes_dropdown_pages_args', 'filter_dropdown_so_14880043', 10, 2 );

function filter_dropdown_so_14880043( $dropdown_args, $post )
{
    $my_args = array(
         'post_type'        => $post->post_type,
         'exclude_tree'     => $post->ID,
         'selected'         => $post->post_parent,
         'name'             => 'parent_id',
         'show_option_none' => '(no parent)',
         'echo'             => 0,
         'sort_order'       => 'DESC',
         'sort_column'      => 'post_date',
         'parent'           => 0
    );
    return $my_args;
}

关于wordpress - 如何 Hook page_attributes_meta_box 以更改显示 "Parent"选项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14880043/

相关文章:

css - 自定义 CSS 禁用按钮功能

c++ - 钩子(Hook)查找窗口

php - 在任何操作或页面加载之前执行的 WordPress Hook

c++ - 如何重定向函数调用然后回调到 "original"函数 c++

WordPress: 'Insert Read More tag' 是如何工作的?

html - 页面选项卡 WordPress 的自定义 CSS

html - 使用子主题在移动设备上显示与桌面不同的 Logo

php - 如果特定产品在 Woocommerce 的购物车中,则显示自定义结帐字段

c++ - 可以放置一个钩子(Hook)来捕获子进程发送到控制台的消息吗?

erlang - 如何在 Erlang 中创建全局变量