当前位置: 首页 > 知识库问答 >
问题:

将ACF管理列添加到自定义帖子类型

华欣荣
2023-03-14

我正在尝试使用自定义字段(ACF)的内容向我的自定义帖子类型添加一个新的管理员列。我想添加的字段是“post object”字段,但它只显示文章标题,而不是ACF中的链接文章。我添加了一个截图。

这是我目前掌握的情况:

function add_new_realisaties_column($columns) {
    $columns['realisatie_line'] = 'Line';
    return $columns;
}
add_filter('manage_realisaties_posts_columns', 'add_new_realisaties_column');

function add_new_realisaties_admin_column_show_value( $column, $post_id ) {
if ($column == 'realisatie_line') {
    $post_object = get_field('realisatie_line');

    if( $post_object ):
        // override $post
        $post = $post_object;
        setup_postdata( $post ); 

        $evdate = the_title();

        wp_reset_postdata(); // IMPORTANT - reset the $post object so the rest of the page works correctly ?>
    <?php endif; 

    echo $evdate;
    }
}
add_filter('manage_realisaties_posts_custom_column', 'add_new_realisaties_admin_column_show_value', 10, 2);

/* Make the column sortable */
function set_custom_realisaties_sortable_columns( $columns ) {
    $columns['realisatie_line'] = 'realisatie_line';
    return $columns;
}
add_filter( 'manage_edit-realisaties_sortable_columns', 'set_custom_realisaties_sortable_columns' );

function realisaties_custom_orderby( $query ) {
    if ( ! is_admin() )
        return;
        $orderby = $query->get('orderby');

        if ( 'realisatie_line' == $orderby ) {
            $query->set( 'meta_key', 'realisatie_line' );
            $query->set( 'orderby', 'meta_value' );
        }
    }
add_action( 'pre_get_posts', 'realisaties_custom_orderby' );

共有2个答案

屠瑞
2023-03-14

尝试将您的< code > add _ new _ realisaties _ admin _ column _ show _ value 函数更改为以下代码。如果ACF字段名是< code>realisatie_line,您还需要传递一个< code>$post_id来获取每个特定帖子的特定元数据。

function add_new_realisaties_admin_column_show_value( $column, $post_id ) {

    //Try using a switch/case for the column name
    switch ( $column ) {
       case 'realisatie_line': //Name of new column from add_new_realisaties_column function
          echo get_the_title( get_post_meta( $post_id, 'realisatie_line', true ) ); //Getting the ACF post meta using the $post_id, passing it through the get_the_title function to get title of attached post
          break;

       default:
          break;

    }
}
巢承安
2023-03-14

我注意到一些事情。一个是您实际上不需要使用setup_postdata()函数,因为ACF Post Object字段使用已经返回一个完整对象的get_post()。只有当您打算覆盖全局$post对象时,您才会这样做,例如在单{post_type}. php模板上。

另一件事是对于post列使用switch语句而不是if/example通常更常见。有点迂腐,但需要注意的是。

最后,默认情况下,the_title()将回显标题,因此分配它,然后再回显它,可能会导致问题(即在文档周围留下变量)。如果您打算将其分配给变量,请考虑使用get_the_title()。此外,我不会详细介绍,但仅使用setup_postdata可能不足以让post助手函数从您想要的位置提取数据

现在,说了这么多,您应该能够从< code>get_field()中回显< code>$post_object的< code>post_title字段,因为它返回一个完整的WP_Post对象。我把它放在我的一个测试点上,它就像预期的那样工作:

add_filter('manage_realisaties_posts_custom_column', 'add_new_realisaties_admin_column_show_value', 10, 2);
function add_new_realisaties_admin_column_show_value( $column, $post_id ){
    switch( $column ){
        case 'realisatie_line':
            if( $post_object = get_field('realisatie_line') ){
                echo $post_object->post_title;
            }
            break;
    }
}

这是它在管理中的样子,注意我只是为post对象关系字段抓取了一个随机的帖子:

 类似资料:
  • 我希望能够将我的WooCommerce产品发布到我的“帖子”类别中。基于下面的鳕鱼,这是可能的。这是我在functions.php.中使用的代码。当我用吴宇森制作新产品时,这些类别是可以点击的。然而,它并没有发布到类别本身。感谢对此事的任何见解。 将类别选择添加到自定义帖子类型

  • 我有一个自定义的帖子类型和一个像这样创建的公文包分类法: 当我在查询中使用它时,它的工作原理应该是这样的。它显示在后端的菜单中,以及此自定义帖子类型的类别。 我的问题是,当我尝试从某个类别检索所有帖子时(通过单击类别名称),我发现

  • 我正在设置一个endpoint,我想用它来更新自定义帖子类型中的ACF字段。 在这里,我注册了字段endpoint和回调 在邮递员中发送此请求:http://localhost:32851/wp-json/responsify/v1/assign_external_writer?写入器=32272 如果我使用“title=my_new_title”而不是writer,它会正确更新。但是使用 ACF

  • 我有一个干净的WordPress安装使用二十一,没有插件或其他修改。该博客包含大约800篇带有相关标签和类别的帖子。 我想将所有这些帖子移动到自定义帖子类型。通过将下面的代码添加到我的functions.php中,我的博客现在已经安装了自定义帖子类型,并且运行良好。 现在,我需要做的就是将常规帖子类型更改为我的自定义帖子类型。我已经设法使用插件转换帖子类型移动帖子,但我的分类没有转换。 我意识到我

  • 我创建了一个名为制造商的自定义帖子类型,并添加了大量帖子和类别。单个帖子页面工作,但类别/存档页面不显示任何帖子。 制造商被分成不同的类别,我需要显示每个类别中所有帖子的存档。我去工厂的时候 http://localhost/category/manufactures/ge-speedtronic/ 这就是令人困惑的地方。我为自定义帖子类型“制造商”使用的类别也显示在我的其他自定义帖子类型和默认帖

  • 搜索很好,它在工作,我正在过滤的交易类型(出售或出租)和房间数量在每个房地产。 但是我的JSON响应缺少很多字段,包括ACF。例如:{ “id”:149,“post_author”:“2”,“post_date”:“2016-03-03 23:53:39”,“post_date_gmt”:“2016-03-03 23:53:39”,“post_content”:“”post_title“:”opo