Anexe dados ao conteúdo dentro do database (não usando o filtro)

Meu site exige que as pessoas possam pesquisar termos incluídos nas tags e categorias (cidades e municípios).

Estou tendo alguns problemas de resources usando o plugin ‘Procurar tudo’, está causando o database mysql para bloquear e me dando uma desaceleração maciça. Eu não culpo o plugin, eu culpo minha hospedagem compartilhada.

MAS, eu queria saber se eu poderia evitar usar um plugin simplesmente adicionando as tags de postagem e nomes de categoria ao conteúdo no database (em vez de usar um filtro que eu acredito que só inclua os termos como eles são renderizados na página) de modo que a pesquisa embutida do WordPress possa ser satisfatória e encontrar estes termos.

Eu li muitas páginas e tutoriais diferentes do codex e não encontrei o que eu preciso, mas espero que alguém possa ver o código a seguir e dar a sua opinião sobre se ele pode funcionar (eu não tenho um servidor de teste disponível no momento e estou hesitante em executá-lo em um site ao vivo!) (Observe que este exemplo inclui tags apenas até agora)

function tags_in_content($post_id, $post) { $content = get_the_content(); $tags = get_tags(); $content->append('$tags'); } add_action ( 'publish_post', 'tags_in_content' ); 

Não pode ser assim tão simples ?!

Muito obrigado por qualquer ajuda que alguém possa me dar!

Solutions Collecting From Web of "Anexe dados ao conteúdo dentro do database (não usando o filtro)"

Eu diria que a melhor maneira de fazer isso é usar a ação save_post , que é executada sempre que uma publicação é modificada na canvas de edição. Isso exigirá um pouco de violão ao escrever e ler o post_content de / para o database. No exemplo abaixo, adicionei uma lista de tags de postagem a post_content . Um complicado, mas é o remover e ler o filtro dentro de seu próprio retorno de chamada, caso contrário, você acabará com um loop infinito.

 add_action( 'save_post', 'my_save_post' ); function my_save_post( $post_id ) { $divider = ""; // We'll use this as a divider of actual post_content and our tag list //verify post is not a revision if ( !wp_is_post_revision( $post_id ) ) { // Remove filter to avoid infinite loop add_action( 'save_post', 'my_save_post' ); $post = get_post($post_id); $content = $post->post_content; // Strip away old tags $editor_content = array_shift(explode($divider, $content)); // Add new tag list to end of post_content $editor_content .= "\n" . $divider . "\n" .implode(", ", wp_get_post_terms($post_id, 'post_tag')); // Update post object and and database $post->post_content = $editor_content; wp_update_post($post); // Add filter again add_action( 'save_post', 'my_save_post' ); } } 

Você provavelmente também precisará adicionar um filtro para remover o formulário de lista de tags post_content antes de ser enviado para o editor textarea. Eu acho que the_editor_content fará um bom trabalho neste caso. O que você quer fazer é basicamente o mesmo que a primeira metade da function acima, ou seja, tirar tudo depois do divisor, mas sem append uma nova lista de tags (não queremos que apareça no editor, certo?) . Isso significa que você pode quebrar isso em sua própria function e usá-lo em ambos os casos, mas deixarei isso para você.