自定义函数的参数来自循环内部的哪里?

时间:2019-02-15 作者:Enrico

我有这段代码,虽然它可以工作,但我不明白它是如何工作的。首先,我在我的mu插件文件夹中创建了一个自定义帖子类型:

function actor_init() {

$args = array(
    \'label\' => \'actors\',
    \'description\' => \'hollywood & stuff\',
    \'supports\' => array(
        \'thumbnail\',
        \'title\',
        \'editor\',
        \'comments\'
        ),
    \'public\'             => true,
    \'publicly_queryable\' => true,
    \'show_ui\'            => true,
    \'show_in_menu\'       => true,

);


register_post_type(\'actor\', $args);

}
然后,在函数中。php我勾住了它。

add_action( \'init\', \'actor_init\' );
还有内部功能。php我创建了一个函数来显示帖子/页面/自定义帖子的标题(如果有)

<?php
function provahel($arg) {

   if (!$arg[\'title\']) {
      $arg[\'title\'] = get_the_title();
   }
?>

   <h1><?php echo $arg[\'title\'] ?></h1>
<?php } ?>
最后,在我的页面中。php,单一参与者。php和single。php文件,我在循环中调用该函数。

<?php
while(have_posts()) {
    the_post();

    provahel($argf);
?>
在前端,正确地呈现帖子的标题,如果它是页面、帖子或自定义帖子类型(在本例中是actor)。为什么?Wordpress如何知道传递给provahel()函数的参数?这个参数$argf是什么(可以以任何方式调用P.S.,它仍然可以工作)<提前感谢您的任何贡献。

2 个回复
最合适的回答,由SO网友:Milo 整理而成

答案可在以下文档中找到:get_the_title:

$post (int | WP\\u Post)(可选)Post ID或WP\\u Post对象默认值为全局$post

如果不提供post对象或post ID,则默认使用全局$post 变量

当你打电话的时候the_post() 在循环中,这将填充全局$post 变量,该变量包含该循环中当前帖子的数据。

编辑:

get_the_title 获取当前的post对象:

$post = get_post( $post );
get_post 然后访问全局$post 如果未向其传递任何内容:

$post = $GLOBALS[\'post\'];

SO网友:Qaisar Feroz

您的功能provahel() 设置标题在if 声明如下:

if (!$arg[\'title\']) {
      $arg[\'title\'] = get_the_title(); // Here you sets the $arg[\'title\'] to current page\' title
   }
所以,若在第页中并没有为$argf赋值。php,您的函数将呈现当前页面的标题。要显示其他内容,需要为$argf[\'title\'] 像这样,在调用函数之前,在第页中。php

 $arg[\'title\'] = "My Custom title...";

相关推荐

The Loop not looping?

在进行了大量的故障排除和搜索之后,我想我终于明白了如何进行循环。但我似乎无法让它真正循环!我创建了一个子主题,并添加了functions.php 文件中包含以下代码:<?php function my_theme_enqueue_styles() { $parent_style = \'grow-thinkup-style-minimal\'; // This is \'twentyfifteen-style\' for the Twenty Fifteen the