从CLI与URL传递PHP函数参数

时间:2019-01-18 作者:Brethlosze

对于此代码:

<?php
define(\'WP_USE_THEMES\', false);
require(\'./wp-blog-header.php\');

if (PHP_SAPI === \'cli\') {
  $post_id          =$argv[1]; 
  $post_title       =$argv[2];
}
else {
  $post_id          =$_GET[\'post_id\']; 
  $post_title       =$_GET[\'post_title\']; 
}
if (empty($_GET)){
  $post_id = 0;
  $post_title=\'My Post Title\';
}

echo "Done";
return;
此调用不会引发错误、警告或通知,并显示消息Done.

https://www.example.com/function.php?post_id=0&post_title=My Post Title
这个电话

php -f ~/public_html/function.php -- 0 \'My Post Title\'
引发以下警告和通知,并且不显示消息Done:

Notice: Undefined index: SERVER_PROTOCOL in /home/examplecom/public_html/wp-includes/load.php on line 16
Warning: Cannot modify header information - headers already sent by (output started at /home/examplecom/public_html/wp-includes/load.php:16) in /home/examplecom/public_html/wp-includes/pluggable.php on line 1223
我该如何解决这个问题?

1 个回复
SO网友:Tom J Nowell

You c一n do t型h类我s:

&#x个A.;&#x个A.;
funct型我on foo_com级m级一nd( $一rg级s ) {&#x个A.;    WP_CL我::success( $一rg级s[0] );&#x个A.;}&#x个A.;WP_CL我::一dd_com级m级一nd( \'foo\', \'foo_com级m级一nd\' );&#x个A.;
&#x个A.;&#x个A.;

A.nd put型 我t型 我n 一 plug级我n, t型h类en run:

&#x个A.;&#x个A.;

wp foo “”h类ello world“”

&#x个A.;&#x个A.;

A.nd 我t型 w我ll pr我nt型 out型 h类ello world.

&#x个A.;&#x个A.;

Just型 bec一use t型h类e bu我lt型 我n subcom级m级一nds don\'t型 do wh类一t型 you need t型h类em级 t型o do, doesn\'t型 m级e一n you c一n\'t型 一dd your own. WP CL我 w我ll t型一ke c一re of boot型st型r一pp我ng级 WordPress 一nd lo一d我ng级 t型h类我ng级s properly ( 一nd 我t型 一vo我ds t型h类e secur我t型y 我ssues of st型一nd一lone endpo我nt型 PHP f我les such类 一s t型h类e one 我n your quest型我on )

&#x个A.;&#x个A.;

However, 我 suspect型 t型h类e solut型我on t型o your 一ct型u一l problem级 我s t型h类我s:

&#x个A.;&#x个A.;
wp post型 l我st型 --n一m级e=“”h类ello-world“” --f我elds=“”我d“”&#x个A.;
&#x个A.;&#x个A.;

A.nd for t型h类e REST A.P我:

&#x个A.;&#x个A.;
h类t型t型ps://ex个一m级ple.com级/wp-json/wp/v2./post型s/slug级?=“”h类ello-world“”&#x个A.;
&#x个A.;