pippin
  • 0
Профи

Получить постоянную ссылку на пост в блоге сети

  • 0

Я пытаюсь написать функцию, которая позволит мне указать идентификатор сообщения и идентификатор блога, а затем вернуть постоянную ссылку и заголовок сообщения в блоге.

Мне нужно, чтобы это было эффективно, потому что функция будет использоваться в цикле foreach, что может привести к тому, что функция будет выполняться более 50 раз.

Есть идеи?

Share
  1. Вы можете использовать какую-либо форму кэширования (например, с Transients codex.wordpress.org/Transients_API ) для кэширования промежуточных результатов? Я бы предложил сначала написать функцию, прежде чем иметь дело с производительностью. См. также: secure.wikimedia.org/wikipedia/en/wiki/…

    • 0
  2. Это звучит довольно просто.

    Использование: http://codex.wordpress.org/Function_Reference/switch_to_blog

    Чтобы вернуться, используйте:

    restore_current_blog();
    

    Это позволяет переключаться с сайта на сайт.

    Затем: http://codex.wordpress.org/Function_Reference/get_permalink.

    Я предполагаю, что у вас есть и идентификатор блога, и идентификатор сообщения.

    Если это так, то использование этих двух функций должно решить вашу проблему.

    • 0
  3. Согласно предложению выше, я пошел на это:

    $html = '<ul>';
    foreach ( $recent_across_network as $post ) {
    
        switch_to_blog( $post->blog_id );
    
        $postURI = get_permalink( $post->ID );          
        $html .= '<li><a href="' . $postURI . '">' . $post->post_title . '</a></li>';
    
        restore_current_blog();
    }
    $html .= '</ul>';
    

    где $recent_across_network список последних сообщений из многосайтовой сети, кэшированный с помощью Transients API. Здесь есть соответствующий учебник.

    Вы также можете сделать:

    $postURI = get_blog_permalink( $post->blog_id, $post->ID );
    

    вместо switch_to_blog() / restore_current_blog() — не уверен, что эффективнее?

    • 0

Оставить ответ

You must login to add an answer.