当前位置: 首页 > 知识库问答 >
问题:

Wordpress...如果删除了外部帖子,请删除帖子

洪建茗
2023-03-14

创建帖子时,我的用户会提供一个外部链接。如果删除了外部链接,本地帖子也应该删除。为了实现这一点,我尝试运行以下代码...

function check_external_page_status()
{
if( is_single() )
{
   if(get_field('external_listing_page'))
    {
        $external_url = get_field('external_listing_page');

        function get_http_response_code($external_url) {
            $external_headers = get_headers($external_url);
            return substr($external_headers[0], 9, 3);
        }

        $get_http_response_code = get_http_response_code($external_url);

        if ( $get_http_response_code == 200 ) {
            //echo "OKAY!";
        }
        else
        {
            //echo "Not okay!";
            //echo $get_http_response_code;
            //echo get_the_ID();

            wp_delete_post( get_the_ID(), false );
            wp_redirect( home_url( '/expired-listing/',410 ) );
            exit;
        }       
    }
}
}
add_action( 'template_redirect', 'check_external_page_status' );

...但是我得到了这些错误...

警告:get_headers(): php_network_getaddresses: getaddrinfo failed: name or service in /home/cornwal2/public_html/listings/wp-content/plugins/insert-php/include/class.execute.snippet.php(390) : eval()'d code on line 12

警告:get_headers(http://fdsafdsfasd.ca):无法打开流:php_network_getaddresses:getaddrinfo失败: /home/cornwal2/public_html/listings/wp-content/plugins/insert-php/includes/class.execute.snippet.php(390)中未知的名称或服务:第12行的val()'d代码

警告:无法修改标头信息-在第1251行的 /home/cornwal2/public_html/listings/wp-includes/pluggable.php中(输出开始于 /home/cornwal2/public_html/listings/wp-content/plugins/insert-php/includes/class.execute.snippet.php(390): val()'d code: 12)发送的标头

警告:无法修改标头信息-标头已由第1254行的/home/cornwal 2/public _ html/listings/WP-content/plugins/insert-PHP/includes/class . execute . snippet . PHP(390):eval()' d code:12)中的/home/cornwal 2/public _ html/listings/WP-includes/pluggable . PHP发送

共有1个答案

宇文飞翮
2023-03-14

所以我想通了...前 2 个警告与无效的外部页面相关。虽然警告是合法的,但在这种情况下,我不想看到它,所以我只是关闭了警告。至于最后的警告,我使用javascript重定向而不是wp_redirect()

function check_external_page_status()
{
if( is_single() )
{
   if(get_field('external_listing_page'))
    {
        $external_url = get_field('external_listing_page');

        function get_http_response_code($external_url) {
           $external_headers = get_headers($external_url);
            return substr($external_headers[0], 9, 3);
        }

        error_reporting(E_ERROR);
        $get_http_response_code = get_http_response_code($external_url);
        //error_reporting(E_ERROR | E_WARNING | E_PARSE | E_NOTICE);
        error_reporting(E_ERROR | E_WARNING | E_PARSE);

        if ( $get_http_response_code == 200 ) {
            //echo "OKAY!";
        }
        else
        {
            wp_die($external_url."<br>Error:".$get_http_response_code);
            //echo "Not okay!";
            //echo $get_http_response_code;
            //echo get_the_ID();

            wp_delete_post( get_the_ID(), false );
            //wp_redirect( home_url( '/expired-listing/',410 ) );
            echo "<script>window.location.replace('".home_url('/expired-listing/')."');</script>";
            exit;
        }       
    }
}
}
add_action( 'template_redirect', 'check_external_page_status' );
 类似资料:
  • 我试图删除特定id的帖子,但它给我错误为:代理错误:无法代理请求 /api/posts从localhost:3001http://localhost:8000。有关更多信息,请参阅https://nodejs.org/api/errors.html#errors_common_system_errors(ECONNREFUSED)。 这是我的行动: 这是我的减速机: 这是我的组件中使用的代码: 这

  • 我想知道是否可以删除自定义帖子类型的URL结构。例如,我有2个自定义帖子类型:投资组合和滑块。 我想保持像这样的投资组合帖子类型的URL结构:mysite.com/portfolio/item-1等。 但是我不希望滑动条帖子的URL结构,因为滑动条只会显示在主页上,我不希望访问者能够访问mysite.com/slider/slide-1。可能吗? 提前感谢:) Wordpress论坛帖子:http

  • 我已经创建了一个自定义的帖子类型“Shop”,其中包含商店类别的自定义分类法 对于我的商店类别存档页面,我希望URL结构为: example.com/shop/tech/(代替example.com/shop/category/tech/) 我希望商店的帖子example.com/shop/shop-post-title-example 我尝试了下面的代码并保存了永久链接,但当我访问商店帖子时,它

  • 好吧,这一定很容易,我就是搞不懂为什么什么都不管用。 我有一个wordpress主题和3个自定义帖子类型。我想限制对大多数帖子的访问,并允许管理员使一些帖子可供公众查看。我希望它尽可能简单。 我目前拥有的是,我已经将所有帖子设置为默认为private,然后管理员可以进入并将任何他喜欢的帖子设置为“public”,以便未登录的人可以看到它们。 问题是,我无法在fontend上为登录用户显示私人帖子。

  • 我有一个JPA属性实体,它有子实体(多个比率和多个保留)。在我的JavaScript应用程序中,我通过REST{属性:{速率:[…],拉取JSON,保留[…]} 。速率和保留非常详细,因此当我发布属性更新(如更改名称)时,我会从JSON post有效负载中删除速率和保留。我希望Hibernate可以忽略掉丢失的钥匙,但遗憾的是,它正在删除save上的所有孩子。如果它们不存在,我如何指定Hibern

  • 我试图递归删除JSON对象和所有子对象中的空值。如果子对象的关键点都已删除,则我希望该子对象也被删除。 比如。 应该变成这样: 下面是我编写的删除所有空值键的函数: 但这不会删除没有子项的父项: 因此,我得到的不是上面的结果,而是: 如您所见,它不会删除申请人的密钥。我如何在函数中检查它?或者它是否需要编写在我调用delKeys()后调用的单独函数中? 还有,有人看到这达到了最大递归深度吗?我尝试