por que não existe uma função global no wordpress para retornar a saída de qualquer chamada de função?
<p>temos tags de template e algumas funções que começam com get. às vezes, seria apenas bom em temas para fazer como:</p><pre><code>$title = the\_title(); </code></pre><p>para usar o html mais tarde. este é apenas um exemplo simplificado, naturalmente, há alguma função como get\_the\_title (); mas isso funciona apenas para essa função.</p><p>eu estou querendo saber por que não existe tal função como esta:</p><pre><code>function get\_output() { $args = func\_get\_args(); $callback = array\_shift($args); ob\_start(); call\_user\_func\_array($callback, $args); return ob\_get\_clean(); } </code></pre><p>isso poderia converter qualquer função que tenha saída em uma função de retorno:</p><pre><code>$title = get\_output('the\_title'); </code></pre><p>alguma idéia por que isso nunca foi pensado? todo autor de um tema ou hacker pode fazer uso de tal, certo?</p>
<p>em resposta direta à pergunta, o wordpress não inclui uma função para isso, em parte porque não se aplica especificamente à funcionalidade do wordpress. ou seja é um problema php (potencial), não wordpress.</p><p>além disso, eu não diria que é responsabilidade do wordpress fornecer soluções alternativas para plugins, etc, que não fornecem uma função para retornar dados (que é contra o estilo geral do wordpress).</p>
<p>esta descrição é gerada pela função <code>post\_excerpt\_meta\_box()</code> e não é passada através de nenhum filtro explícito. no entanto, ele é ecoado pela função relacionada à tradução <a href="http://codex.wordpress.org/function\_reference/\_e"><code>\_e()</code></a> e, assim, passa pelo filtro <code>gettext</code> (que, da sua pergunta, você já conhece).</p><p>quanto a limitá-lo ao seu cpt, acho que o tipo de postagem atual em admin é mantido na variável global <code>$post\_type</code> que você pode verificar.</p> <p>eu tenho isso na minha essência. eu criei um wrapper stl em torno de glob para que ele retorne vetor de string e cuide de liberar o resultado glob. não é exatamente muito eficiente, mas esse código é um pouco mais legível e alguns diriam mais fácil de usar.</p><pre><code>#include &lt;glob.h&gt; // glob(), globfree() #include &lt;string.h&gt; // memset() #include &lt;vector&gt; #include &lt;stdexcept&gt; #include &lt;string&gt; #include &lt;sstream&gt; std::vector&lt;std::string&gt; glob(const std::string&amp; pattern) { using namespace std; // glob struct resides on the stack glob\_t glob\_result; memset(&amp;glob\_result, 0, sizeof(glob\_result)); // do the glob operation int return\_value = glob(pattern.c\_str(), glob\_tilde, null, &amp;glob\_result); if(return\_value != 0) { globfree(&amp;glob\_result); stringstream ss; ss &lt;&lt; "glob() failed with return\_value " &lt;&lt; return\_value &lt;&lt; endl; throw std::runtime\_error(ss.str()); } // collect all the filenames into a std::list&lt;std::string&gt; vector&lt;string&gt; filenames; for(size\_t i = 0; i &lt; glob\_result.gl\_pathc; ++i) { filenames.push\_back(string(glob\_result.gl\_pathv[i])); } // cleanup globfree(&amp;glob\_result); // done return filenames; } </code></pre> <p>oi felipe, blz?</p>
<p>o writehead() serve para passar os headers http corretos conforme a regra de negócio.</p>
<p>caso ele não seja passado, o cliente não tem como saber o tipo do retorno.</p>
<p>o que acontece é que o navegador é um cliente bastante inteligente e ele já consegue inferir que o tipo do documento é um html, mesmo sem a informação do content-type, pq o seu conteudo inicia com a tag <code>html</code>.</p>
<p>caso a url seja acessada a partir de um cliente que não faz esse tratamento, ele exibiria um texto plano.</p>
<p>você pode fazer um teste para validar essa resposta alterando o conteudo da resposta para que ele não mais inicie com a tag <code>html</code>.</p>
<p>se vc fizer isso, verá que o navegador passa a exibir o conteudo como texto plano normal.</p>
<p>depois compartilha aqui se a explicação te ajudou. &#61;)</p> <p>sempre que você retornar um objeto, retornará uma referência ao objeto. da mesma forma, quando você está passando um objeto, está passando uma referência. no entanto, passar um objeto como argumento <em>pode</em> ser diferente do que apenas alterar um objeto no escopo global, como mostram esses exemplos. isso ocorre porque a referência ao objeto é transmitida por valor.</p><p>se você estiver alterando os membros de um objeto, se você o passa como argumento ou apenas atualiza o objeto global não faz diferença. de qualquer maneira, você está trabalhando com o mesmo objeto.</p><p>exemplo 1:</p><pre><code>var object = {foo:'original'}; function changeobject() { object.foo = 'changed'; return object; } console.log(changeobject()); // outputs {foo:'changed'} console.log(object); // outputs {foo:'changed'} </code></pre><p>exemplo 2:</p><pre><code>var object = {foo:'original'}; function changeargument(object) { object.foo = 'changed'; return object; } console.log(changeargument(object)); // outputs {foo:'changed'} console.log(object); // outputs {foo:'changed'} </code></pre><p>por outro lado, se você estiver substituindo o objeto por um novo objeto, a alteração não persistirá se você fizer isso no argumento, mas persistirá se você fizer isso no objeto global. isso ocorre porque o argumento passa a referência ao objeto por valor. depois de substituir esse valor por uma referência a um novo objeto, você não está mais falando do mesmo objeto.</p><p>exemplo 3:</p><pre><code>var object = {foo:'original'}; function replaceobject() { object = {foo:'changed'}; return object; } console.log(replaceobject()); // outputs {foo:'changed'} console.log(object); // outputs {foo:'changed'} </code></pre><p>exemplo 4:</p><pre><code>var object = {foo:'original'}; function replaceargument(object) { object = {foo:'changed'}; return object; } console.log(replaceargument(object)); // outputs {foo:'changed'} console.log(object); // outputs {foo:'original'} </code></pre> <p>fala ai augusto, tudo bem? isso funciona pois a linguagem javascript é dinâmica, então o parâmetro será passado para a função mas não será atribuído para nenhuma variável.</p>
<p>espero ter ajudado.</p> nesse site tem uma capturade tela dessa funcionalidade... https:/… <p>ainda não. esse recurso ainda está na lista de sugestões de recursos do gmail.</p><p> <a href="http://mail.google.com/support/bin/static.py?page=suggestions.cs">sugira um recurso para o gmail</a> </p> <p>oi, luiz, tudo bem?</p>
<p>o <em>dir</em> faz parte dos atributos globais. atributos globais se aplicam a todas as tag html.</p>
<p>no caso do <em>dir</em>, ele dá a direção do texto, ele assume dois valores possiveis: </p>
<ul><li>ltr :o texto é escrito da esquerda para a direita;</li><li>rtl : o texto é escrito da direita para a esquerda.</li></ul>
<p>espero ter te ajudado :}</p> <p>na verdade, marcar uma tarefa como concluída não a exclui, mesmo depois de escolher "limpar tarefas concluídas". você sempre pode ver as tarefas concluídas. na visualização do console ( <a href="https://mail.google.com/tasks/a/yourdomain.com/canvas">https://mail.google.com/tasks/a/seudominio.com/canvas</a> ) basta escolher a visualização "tarefas concluídas". no gmail ou gcal, você pode escolher "ações/exibir tarefas concluídas".</p> <p>na página do manual <code>ps</code>:</p><blockquote> <p>-e selecione todos os processos. idêntico a -a.</p> </blockquote><p>portanto, <code>ps -e</code> exibirá todos os processos. as opções comuns para "me dê tudo" são <code>ps -ely</code> ou <code>ps aux</code>, o último é o estilo bsd. frequentemente, as pessoas canalizam essa saída para <code>grep</code> para procurar um processo, como na resposta do xenoterracide. para evitar também ver <code>grep</code> na saída, você verá frequentemente algo como:</p><pre><code> ps -ef | grep [f]oo </code></pre><p>onde foo é o nome do processo que você está procurando.</p><p>no entanto, se você estiver procurando por um processo específico, recomendo usar o comando <code>pgrep</code> se estiver disponível. acredito que esteja disponível no ubuntu server. usar <code>pgrep</code> significa evitar a condição de corrida mencionada acima. ele também fornece alguns outros recursos que exigiriam truques <code>grep</code> cada vez mais complicados para serem replicados. a sintaxe é simples:</p><pre><code>pgrep foo </code></pre><p>onde foo é o processo pelo qual você está procurando. por padrão, ele simplesmente emitirá o id do processo (pid) do processo, se encontrar um. vejo <code>man pgrep</code> para outras opções de saída. achei a seguinte página muito útil:</p><p> <a href="http://mywiki.wooledge.org/processmanagement">http://mywiki.wooledge.org/processmanagement</a> </p>