从插件的POST中获取ID并使用它创建对象

时间:2016-01-06 作者:bestprogrammerintheworld

我想创建一个对象并为此对象设置ID

喜欢

$p = new Product(87);
我在插件中有此代码,我想获取显示的自定义帖子的ID:

function getPostId(){ 
        global $wp_query;
        global $pid;
        $pid = $wp_query->post->ID;      
        echo \'pid=\' . $pid; //returns 87
} 
add_action(\'wp_head\',\'getPostId\');

//I want to get the $pid here.
echo \'pid=\' . $pid; //returns null
现在我想做:

$p = new Product($pid);
$p->setABigTomatoOnYourHead();
我不能只用get_the_ID(), global $post 等等,因为它不可访问。

基本上我所做的就是从正在查看的自定义帖子中获取ID。在我的插件中,我想基于该ID创建一个新对象。

UPDATE“here”与插件主文件中创建的类位于同一个文件中:

喜欢

class Product {
}

$x = new Product($id); //here

1 个回复
SO网友:s_ha_dum

我在插件中有此代码,我想获取显示的自定义帖子的ID:

。。。

“here”与插件主文件中创建的类位于同一个文件中:

class Product {
}

$x = new Product($id); //here
你不能那样做。“正在显示的自定义帖子”不会显示在插件页面上,您的操作也不会在后端启动。您必须在wp_head 钩子或其他前端钩子--类似于:

function getPostId(){ 
    global $wp_query;
    global $x; // bad variable name
    $x = new Product($wp_query->post->ID);
} 
add_action(\'wp_head\',\'getPostId\'); 
很有可能您可以重写该类以避免部分或全部这样的情况global 混乱

如果您需要后端页面的ID,则必须找到另一种方法来标识该页面。你不能简单地钩住一个动作,而这个动作不能找到一个没有加载的页面的ID。

相关推荐

如何修改WP_INCLUDE/BLOCKS/LATEST_posts.php

我是WordPress开发的初学者,希望得到一些帮助。我在一个简单的WordPress网站上工作。基本上,用户希望在主页上显示最新的帖子。我使用了最新帖子块,并将其设置为显示整个帖子内容,现在用户不希望帖子标题链接到单个帖子页面(因为帖子的内容显示在主页上)。如何安全地修改模板文件,使其像h2标记一样使用,而不是在主题中使用的href标记。我知道您可以创建子主题并修改wp_content 文件,但我不确定如何处理中的文件wp_include. 我读到一些关于修改functions.php 但我不确定,如果