Modificar links quando inserido pelo editor WYSIWYG

Existe alguma possibilidade de se conectar ao editor do WordPress para que, se um link para um conteúdo interno for inserido através do editor WYSIWYG, o ID da postagem desse post vinculado é adicionado como um atributo de dados ao link?

Solutions Collecting From Web of "Modificar links quando inserido pelo editor WYSIWYG"

O HTML para os links internos inseridos é gerado pelo Javascript, então não tenho conhecimento de nenhuma maneira fácil de mudar isso.

A geração de HTML é controlada a partir do método wpLink.htmlUpdate (modo HTML) e do método wpLink.mceUpdate (modo TinyMCE), no arquivo /wp-includes/js/wplink.js .

Aqui estão algumas idéias:

Adicione um parâmetro de consulta aos links inseridos:

Poderíamos adicionar um parâmetro de consulta, contendo a informação da ID da postagem, ao URL dos links inseridos, por exemplo:

 http://example.dev/hello-world/?wpse_pid=475 

com o seguinte:

 /** * Append the wpse_pid query argument to inserted links * * @see http://wordpress.stackexchange.com/a/170836/26350 */ add_filter( 'wp_link_query_args', function( $query ) { add_filter( 'post_link', 'wpse_post_link', 10, 2 ); return $query; }); add_filter( 'wp_link_query', function( $query ) { remove_filter( 'post_link', 'wpse_post_link', 10 ); return $query; }); function wpse_post_link( $permalink, $post ) { if( false === stripos( $permalink, '?p=' ) ) $permalink = add_query_arg( array( 'wpse_pid' => $post->ID ), $permalink ); return $permalink; } 

Aqui está uma captura de canvas mostrando isso em ação:

link com o parâmetro wpse_pid

Substitua o método wpLink.mceUpdate :

O seguinte hack é apenas divertido, uma vez que o método pode mudar no futuro.

Isso é adicional aos trechos de código acima.

 /** * Override the wpLink.mceUpdate method to modify the inserted link HTML. * * @see http://wordpress.stackexchange.com/a/170836/26350 */ add_action( 'admin_footer-post.php', function(){ ?>  < ?php }, 99 ); 

O HTML do link inserido agora possui o formulário:

 Hello World 

onde o link não modificado é:

 Hello World 

Aqui usei os atributos class e id, uma vez que eles parecem ser atributos suportados pelo editor tinyMCE . Eu tentei attrs.data mas isso não funcionou. Você pode querer aprofundar isso.

Deve ser semelhante a replace o método wpLink.htmlUpdate . Mas isso é apenas uma prova de conceito 😉

Outra idéia seria verificar os links do conteúdo do post durante as atualizações e modificá-los com algumas substituições inteligentes da Regexp ou algumas modificações do PHP DOM.

Espero que você possa seguir isso e modificar suas necessidades.