post_row_actions para el tipo de publicación personalizada

2

Estoy usando este código para tener una función de publicación duplicada en el Administrador de WordPress. Sin embargo, cuando agrego el filtro para un tipo de publicación personalizada, como este:

add_filter( 'directory_row_actions', 'rd_duplicate_post_link', 10, 2 );

(El tipo de publicación personalizada tiene un nombre registrado de directory ): no lo agrega a la fila de acción debajo del título de la entrada. Cuando lo hago para las publicaciones o páginas, como esto:

add_filter( 'post_row_actions', 'rd_duplicate_post_link', 10, 2 );

funciona perfectamente. He estado leyendo que post_row_actions ha sido desaprobado, pero no puedo encontrar en ningún lugar que diga que es un reemplazo. ¿Alguien sabe cómo hacer que esto funcione para mi tipo de publicación personalizada?

    
pregunta Tom Oakley 11.09.2014 - 14:46

2 respuestas

6

Como comentó @bonger, no hay un filtro de tipo de publicación personalizado a pesar de lo que has leído.

Para usar este filtro para un tipo de publicación específica, la mejor manera es usar el filtro post_row_actions y luego probar contra el pasado en $post->post_type .

He utilizado el siguiente código para agregar enlaces a la fila de acciones para un tipo de publicación específico (en este caso, myposttype).

Será necesario editarlo para que funcione para tu propio tipo de publicación, y obviamente, para que el nuevo enlace haga algo, se necesita más código, pero esta es la idea:

function my_duplicate_post_link($actions, $post)
{
    if ($post->post_type=='myposttype')
    {
        $actions['duplicate'] = '<a href="#" title="" rel="permalink">Duplicate</a>';
    }
    return $actions;
}
add_filter('post_row_actions', 'my_duplicate_post_link', 10, 2);
    
respondido por el jammypeach 15.12.2014 - 17:23
-2
//Post, page or all register custom post types

function im_duplicate_post_link($actions, $post)
{
    // get all post type which is register
    $posttypes = get_post_types(array('public' => true), 'names', 'and');
    foreach ($posttypes as $post_type)
    {
        $posttype[] = $post_type;
    }
    //check current post type is in "$posttype"  array, if it's in array then display duplicate link.
    if (in_array($post->post_type, $posttype))
    {
        $actions['duplicate'] = '<a href="admin.php?action=im_duplicate_post_as_draft&amp;post=' . $post->ID . '" title="Duplicate this item" rel="permalink">Duplicate</a>';
    }
    return $actions;
}
// this hook for post and custom post type
add_filter('post_row_actions', 'im_duplicate_post_link', 10, 2);
// this hook for page
add_filter('page_row_actions', 'im_duplicate_post_link', 10, 2);
    
respondido por el Irfan Modan 02.01.2015 - 11:52

Lea otras preguntas en las etiquetas