Download de PDF – use funções de wordpress

Estou criando um plugin onde o usuário pode baixar arquivos. Atualmente vejo links de download como:

Some Download 

Problema:

Eu preciso usar a funcionalidade core wordpress como is_user_logged_in() ou get_current_user_id() no download.php. Como posso usar essas funções neste arquivo php?

(PS: eu não quero include wp-load em download.php)

Solutions Collecting From Web of "Download de PDF – use funções de wordpress"

Você deve criar uma function em seu plugin onde você ouve um URL específico ou observe parâmetros específicos. Por exemplo, para gerar o link de download:

 < ?php $nonce = wp_create_nonce( 'download-' . $filename ); echo 'Some Download'; ?> 

E para baixar o arquivo:

 if ( ! empty( $_GET['_wp_nonce'] ) && ! empty( $_GET['download'] ) && wp_verify_nonce( $_GET['_wp_nonce'], 'download-' . $_GET['download'] ) ) { /* * Check if file exists and then output the right headers and the content of the file */ exit; } 

O WordPress fornece alguns cookies que acompanham se o usuário está logado e o que é a ID do usuário. Estes são descritos nesta página no Codex :

Após o login, wordpress define o cookie wordpress_logged_in_ [hash], que indica quando você está logado e quem é você, para a maioria do uso da interface.

O WordPress também define alguns cookies wp-settings {{tempo} – [UID]. O número no final é o seu ID de usuário individual na tabela do database dos usuários. Isso é usado para personalizar sua visão da interface de administrador e, possivelmente, também a interface do site principal.

Se você absolutamente deve evitar carregar wp-load.php no seu arquivo download.php , você pode verificar a existência desses cookies em seu arquivo usando o $_COOKIE global e analisar o cookie wp-settings-{time}-[UID] para obter o ID do usuário (“UID”).

Na minha opinião sincera, acho que isso é um desperdício, em comparação com apenas as seguintes duas linhas no topo do seu arquivo download.php :

 define( 'WP_USE_THEMES', false ); require( './wp-load.php' ); 

Isso não carregará nenhum arquivo de tema ou funções de modelo, mas instantaneamente você terá access às principais funções do WordPress que você está procurando. Gostaria de encorajá-lo a tentar de ambos os modos (se você estiver tão inclinado) e ver a diferença de desempenho … não será muito, especialmente em um servidor executando o PHP7.

Como você mencionou, o arquivo está localizado na sua pasta de plugins, você não precisa adicionar o arquivo wp-load.php aqui se você não conseguir usar as funções padrão do WordPress. Você precisa include o arquivo do arquivo PHP principal do seu plugin.

Espero que isso resolva sua consulta.