Wordpress 다중 사이트 설치(3.0)에서 모든 블로그 옵션 테이블을 동시에 쿼리하려면 어떻게 해야 합니까?
Wordpress 3.0 멀티 사이트 설치에서는 '플랫폼'이라고 불리는 모든 블로그에 대한 커스텀 옵션이 있습니다.관리자는 블로그를 작성하거나 편집할 때 이 플랫폼의 값을 입력할 수 있습니다.일부 블로그에는 플랫폼이 없을 수 있습니다.
모든 플랫폼과 관련 블로그 목록을 작성할 수 있어야 합니다.문제는 다른 사이트 메커니즘을 통해 블로그를 동적으로 작성 및 삭제하기 때문에 반드시 연속되지 않는 번호를 가진 블로그 옵션테이블이 많이 있습니다(즉, wp_2_contract, wp_4_contract, wp_12_contract 등)
Wordpress에서 모든 블로그에서 옵션을 선택할 수 있는 방법이 있습니까?반대로 수동으로 실행할 수 있는 쿼리가 있습니까?난 이런 걸 시도해봤지만 아무 소용이 없었어
T WHERE option_namen_n'플랫폼'으로 * FROM information_breaks.wp_%_breaks'와 같은SELECT table_name WHERE WHERE table_name WERE option_n'플랫폼'을 선택합니다.
내가 하려는 게 말이 되나요?MySql에 대한 지식이 부족한 점 다시 한번 사과드립니다만, 그 방법에 대한 답변을 찾을 수 없었습니다.또한 이러한 모든 테이블 이름을 먼저 조회한 후 각 테이블을 개별적으로 조회할 수도 있습니다.다만, 많은 블로그가 있기 때문에, 이 쿼리를 동시에 실행할 필요가 있을 가능성이 있기 때문에, 이러한 요구 마다 수백개의 쿼리를 추가할 수 있습니다.
조언이나 도움을 주시면 감사하겠습니다.
혹시 관심 있는 분이 계실까 봐 이렇게 하게 되었습니다(하지만 LIKE를 사용하여 테이블명을 검색하여 그 테이블을 조회할 수 있는지 알고 싶습니다).
// so get all the blog ids from the blogs table
$blogs = $wpdb->get_results("SELECT blog_id FROM {$wpdb->blogs}", ARRAY_A);
// build a sql statement for each blog options table, adding in the blog id for each row
$select_statements = array();
foreach ($blogs as $blog_row) {
$select_statements[] = 'SELECT option_value, CAST( '.$blog_row['blog_id'].' AS UNSIGNED INTEGER ) AS blog_id FROM '.$wpdb->get_blog_prefix($blog_row['blog_id'])."options WHERE option_name='$option_name'";
}
// cache the results of the union of all these select statements
$option_results = $wpdb->get_results(implode(' UNION ALL ', $select_statements), ARRAY_A);
MySQL 데이터베이스를 직접 쿼리하려면 프로시저를 생성하여 사용할 수 있습니다.
use wordpress;
Drop Procedure IF EXISTS wordpress.MyProcedure;
DELIMITER | ;
CREATE PROCEDURE MyProcedure (param1 VARCHAR(30))
BEGIN
DECLARE tbname CHAR(50);
DECLARE endfetch INT DEFAULT 0;
DECLARE cur1 CURSOR FOR
SELECT table_name FROM information_schema.tables WHERE table_schema='wordpress' and table_name like '%options';
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000'
SET endfetch = 1;
OPEN cur1;
FETCH cur1 INTO tbname;
fetchloop: WHILE NOT endfetch DO
SELECT tbname ;
SET @opt = param1;
SET @table_name = tbname;
SET @sql_text = concat('SELECT option_value FROM ',@table_name,' WHERE option_name=''',@opt,'''');
PREPARE stmt FROM @sql_text;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
FETCH cur1 INTO tbname;
END WHILE fetchloop;
END
|
DELIMITER ; |
CALL MyProcedure('siteurl');
언급URL : https://stackoverflow.com/questions/3817540/how-can-i-simultaneously-query-all-blog-options-table-in-a-wordpress-multisite-i
'bestsource' 카테고리의 다른 글
Python Json은 사전 대신 문자열을 반환()합니까? (0) | 2023.02.23 |
---|---|
입력되지 않은 npm 모듈에 대한 TypeScript 사용자 지정 선언 파일 (0) | 2023.02.23 |
테이블에서 TOP N 행을 선택합니다. (0) | 2023.02.23 |
ASP의 Date Time 포맷.시스템을 사용한NET Core 3.0Text.Json (0) | 2023.02.23 |
restAssured를 사용한 스프링 부트레스트 응용 프로그램 테스트 (0) | 2023.02.23 |